Главная страница
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.018 c
1-2191
Сергей Петров
2004-01-21 06:24
2004.02.02
Как сделать кнопку произвольной формы?


6-2244
stud
2003-11-25 15:41
2004.02.02
как расшарить ресурс в досе


14-2276
Teren
2004-01-02 18:01
2004.02.02
Странная ситуация с файлом


1-2173
alexnmsk
2004-01-21 14:03
2004.02.02
Вопрос по динамическому массиву


1-2118
Dysan
2004-01-19 17:18
2004.02.02
номер версии