![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вычислить разницу в датах?
caries © (2006-03-02 13:07:00)Подскажите, плз, как вычислить разницу в датах, т е в виде дни.месяцы.годы. Заранее спасибо)
Anatoly Podgoretsky (2006-03-03 07:45:00) [1]Германн © (03.03.06 02:22) [6]
Это я тебе подскажу, надо будет нарисовать таблицк соответствий на 365*365 и вторую 365*366
Германн (2006-03-03 02:22:00) [2]
> Desdechado © (02.03.06 13:59) [4]
>
> > в виде дни.месяцы.годы.
> не получится, ибо месяцы и годы - разной длины
> в каких тебе считать надо?
>
Получится, если в разности используются реальные даты. Но реализацию сего я не знаю.
VICTOR_ (2006-03-02 23:28:00) [3]Как вариант(схематично)
DeltaYear:=Year2-Year1;
if Month2>=Month1 then
DeltaMonth:=Month2-Month1
else
begin
DeltaMonth:=Month2-Month1+12;
DeltaYear:=DeltaYear-1;
end;
if Day2>=Day1 then
DeltaDay:=Day2-Day1
else
begin
DeltaDay:=Day2-Day1+DaysPerMonth(Month1);//DaysPerMonth - необходимо написать функцию для получения количества дней в месяце
DeltaMonth:=DeltaMonth-1;
end;
Только для улучшения точности вычисления разницы дней надо учитывать что если в обоих датах - последний день месяца - то разница в днях всегда будет равна 0.
Напр.
30 апреля - 31 марта = 0 дней
30 апреля - 30 марта = 0 дней
30 апреля - 29 марта = 1 день
29 апреля - 31 марта = -2 дня
29 апреля - 30 марта = -1 дня
31 мая - 30 апреля = 0 дней
31 мая - 29 апреля = 2 дня
30 мая - 30 апреля = 0 дней
30 мая - 29 апреля = 1 день
Desdechado (2006-03-02 13:59:00) [4]> в виде дни.месяцы.годы.
не получится, ибо месяцы и годы - разной длины
в каких тебе считать надо?
caries (2006-03-02 13:15:00) [5]спасибо)))
TUser (2006-03-02 13:11:00) [6]DaysBetween
azl (2006-03-02 13:11:00) [7]DaysBetween