Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
ВнизDaysBetween аналог Найти похожие ветки
← →
Grinder (2004-01-20 00:35) [0]есть ф-ция DaysBetween, которая сравнивает две даты и дает их разницу. Но дает по модулю. Есть ли ф-ция которая делает то же, но без модуля?
← →
VID (2004-01-20 01:00) [1]узнаёшь разницу по модулю, с помощью этой DaysBetween, ну а потом
if d1<d2 then рузультат возвращённый этой функцией (или как она там это делает) умножаешь на -1
← →
Grinder (2004-01-20 01:11) [2]я сделал во как
function DaysBetween2 (FDate, SDate:TDateTime):integer;
begin
Result:=Trunc(Sdate-FDate);
end;
← →
VID (2004-01-20 01:23) [3]коли уж взял на себя честь в качестве входных аргументов работать с типом TDateTime ( а это не только дата, но ещё и время!), то будь добр поддерживать их до конца..
а твой вариант функции облажается если я в него передам такие значения DaysBetween2 (d2,d1) где
d1 = "10.01.2004 00:00";
d2 = "10.01.2004 23:00";
и вернёт мне 0, хотя на саммом деле 23 часа разница )
короче, поменяй TdateTime на TDate :))
← →
Grinder (2004-01-20 02:24) [4]Спасибо :)
← →
Anatoly Podgoretsky (2004-01-20 09:30) [5]VID © (20.01.04 01:23) [3]
И вернет тот же но, убрать надо Trunc
← →
div (2004-01-20 09:50) [6]функция DaySpan() из модуля DateUtils.
← →
AKul (2004-01-20 10:21) [7]Неужели так трудно заглянуть в HELP и своими глазами увидеть, что TDateTime - не что иное как тип Double, целая часть которого число дней (с 12.30.1899), а дробная - время, точнее отношение времени к 24 часам (12 часов дня = 0.5).
Поэтому, для того чтобы получить разность между двумя датами (TDateTime) достаточно их вычесть друг из друга.
В результате: целая часть числа - разность в днях, а дробная...
← →
Grinder (2004-01-20 14:08) [8]Во как надо :)
// Разница 2х дней
function DaysBetween2 (const FDate, SDate:TDateTime):integer;
var
delta:integer;
begin
delta:=Trunc(Sdate)-Trunc(FDate);
Result:=delta;
end;
← →
AKul (2004-01-20 14:11) [9]to Grinder © (20.01.04 14:08) [8]
Лучше так:
delta:=Trunc(Sdate-FDate);
или Round(Sdate-FDate);
Смотря как надо учитывать "Неполный" день
← →
Плохиш_ (2004-01-20 14:16) [10]>VID © (20.01.04 01:23) [3]
А что 23 часа уже стали равны одному дню?
>Grinder © (20.01.04 14:08) [8]
Вот теперь точно облажается
d1 = "10.01.2004 23:00";
d2 = "11.01.2004 01:00";
Сколько дней разница?
← →
Плохиш_ (2004-01-20 14:17) [11]После [2] ветку можно было закрыть
← →
Grinder (2004-01-20 17:01) [12]мне глевное чтобы было, что если сегодня 20, то 21 - это 1 день. И не важно что сейчас 23 часа. Дело в том, что дни по календарб сравниваются визуально. И если там на одном календаре 20, а на другом 21, то разница должна быть именно 1 день.
Спасибо всем.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c