Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

разница между датами в виде 22 года 4 месяца 12 дней   Найти похожие ветки 

 
~viper~   (2005-09-20 12:52) [0]

Добрый день, уважаемые!

Помогите чем можете =). Есть такая необходимость посчитать разницу между двумя датами,например, нужно разница между датами 20.09.2005 и 01.05.1983, а вот тут собственно сама проблема, результат должен быть в виде /22 года/4 месяца/20 дней, а не сколько прошло месяцев или дней после этой даты!

Заранее благодарен за своевременную помощь!


 
kblc ©   (2005-09-20 13:02) [1]

Некогда попробовать. но так не катит:

 DayBetween:=StrToDate("20.09.2005") - StrToDate("01.05.1983");

- разница между ними в днях. Как это привести к ГГ/ММ/ДД я думаю ты догадаешься.. ;))

 Ещё точно помню что в SysUtils ещё что-то интересное есть...


 
evvcom ©   (2005-09-20 13:42) [2]


> ~viper~   (20.09.05 12:52)

Для начала ответь на вопросы:
1. 1 месяц - это сколько дней?
2. 1 год - это сколько дней?


 
kblc ©   (2005-09-20 14:33) [3]

evvcom ©   (20.09.05 13:42) [2]
Зачем над людьми издеваешься? Откуда нам знать??? ;)))


 
Anatoly Podgoretsky ©   (2005-09-20 14:35) [4]

kblc ©   (20.09.05 14:33) [3]
Зачем же тогда делаешь гнусные намеки.


 
Бурундук ©   (2005-09-20 14:56) [5]

Попробуй перебором.

Примерно так (набросал на ходу, на ошибки не проверял):

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) );


 
evvcom ©   (2005-09-20 14:57) [6]


> Откуда нам знать???

А как ты тогда собрался задачу компьютеру объяснять? Допустим у тебя получилось 35 дней. Дай ответ без приведения дельфовых функций сколько это месяцев и дней?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.014 c
14-1126851684
BiN
2005-09-16 10:21
2005.10.09
Никто в космос слетать не хочет?


4-1123866267
OlegTrubin
2005-08-12 21:04
2005.10.09
PlaySound асинхронно


14-1127134185
oldman
2005-09-19 16:49
2005.10.09
Блин, проблема :(


1-1126849785
john_mag
2005-09-16 09:49
2005.10.09
Rave Reports, QuickReport или MSWord, MSExcel?№1


14-1126849420
Разгневанный манагер
2005-09-16 09:43
2005.10.09
Как защитить свой компьютер от непрошенных гостей?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский