Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-2181
It
2004-01-21 08:09
2004.02.02
TreeView


3-2020
Term
2004-01-06 15:43
2004.02.02
Посоветуйте компонент который бы 100% подерживал бы клиперовские


14-2348
Дмитрий В. Белькевич
2004-01-09 02:39
2004.02.02
Смерть Запада


1-2131
NailMan
2004-01-19 15:14
2004.02.02
Перехват EConvertError


1-2194
Riddler
2004-01-14 01:30
2004.02.02
Подсветка HTML





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский