![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
разница между датами в виде 22 года 4 месяца 12 дней [D7, WinXP]
~viper~ © (2005-09-20 12:52:00)Добрый день, уважаемые!
Помогите чем можете =). Есть такая необходимость посчитать разницу между двумя датами,например, нужно разница между датами 20.09.2005 и 01.05.1983, а вот тут собственно сама проблема, результат должен быть в виде /22 года/4 месяца/20 дней, а не сколько прошло месяцев или дней после этой даты!
Заранее благодарен за своевременную помощь!
evvcom (2005-09-20 14:57:00) [1]
> Откуда нам знать???
А как ты тогда собрался задачу компьютеру объяснять? Допустим у тебя получилось 35 дней. Дай ответ без приведения дельфовых функций сколько это месяцев и дней?
Бурундук (2005-09-20 14:56:00) [2]Попробуй перебором.
Примерно так (набросал на ходу, на ошибки не проверял):
var
date1, date2: TDateTime; // date1 < date2
d, m, y,
d_cnt, m_cnt, y_cnt: Word;
DecodeDate(date1, y, m, d);
y_cnt := 0;
repeat
// прибавляешь по году и смотришь, сколько целых лет прошло
if EncodeDate(y+y_cnt+1, m, d) < date2 then
Inc(y_cnt) else
Break;
until False;
m_cnt := 0;
repeat
if EncodeDate(y+y_cnt, m + m_cnt + 1, d) < date2 then
Inc(m_cnt) else
Break;
until False; // целых месяцев
d_cnt := Trunc(date2 - EncodeDate(y+y_cnt, m + m_cnt, 0) );
Anatoly Podgoretsky (2005-09-20 14:35:00) [3]kblc © (20.09.05 14:33) [3]
Зачем же тогда делаешь гнусные намеки.
kblc (2005-09-20 14:33:00) [4]evvcom © (20.09.05 13:42) [2]
Зачем над людьми издеваешься? Откуда нам знать??? ;)))
evvcom (2005-09-20 13:42:00) [5]
> ~viper~ (20.09.05 12:52)
Для начала ответь на вопросы:
1. 1 месяц - это сколько дней?
2. 1 год - это сколько дней?
kblc (2005-09-20 13:02:00) [6]Некогда попробовать. но так не катит:
DayBetween:=StrToDate('20.09.2005') - StrToDate('01.05.1983');
- разница между ними в днях. Как это привести к ГГ/ММ/ДД я думаю ты догадаешься.. ;))
Ещё точно помню что в SysUtils ещё что-то интересное есть...