Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
14-2304
Murad
2004-01-12 15:21
2004.02.02
Как Закачать сайт из инета со всеми файлами и структурой


14-2298
}|{yk
2004-01-12 16:36
2004.02.02
Вопросы из харьковского ЧГК. №4 (ноябрь)


1-2088
iosafat
2004-01-20 10:03
2004.02.02
Поиск слов в режиме WholeWord


8-2236
Sim
2003-09-16 20:07
2004.02.02
Фракталы (мн-во Мандельброта)


1-2220
Анонимщик
2004-01-19 12:01
2004.02.02
Помогите с компонентом календаря