![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Математические действия с датой (TdateTime) [D5, Win95/98]
Евгений-Зеленоград © (2002-03-29 21:44:00)Привет ВСЕМ! :?)) Много брожу, всех спрашиваю и никто толком не может ответить, как сделать приращение к дате (к примеру 10.11.2002)Необходимо сделать приращение к году вперед на пять лет, т.е. прибавить. Как вот это сделать ума не приложу! Конечно нужно отделить год от основной даты (декодировать) и после только делать математичесое преобразование, но как?
Заранее всем гран мерси.............
Дима2 (2002-03-30 19:38:00) [1]Знаю точно, что Time+Time проходит, вот только , если 23.58.59 +
00.02.00 то будет 00.01.59
Anatoly Podgoretsky (2002-03-30 17:01:00) [2]Я знаю про все эти функции, просто они мне не нужны, тестирование на все возможные ошибки займет больще времени, чем написание своей
Erlend (2002-03-30 16:58:00) [3]IncYear - конечно
Есть ещё и IncMonth.
Erlend (2002-03-30 16:57:00) [4]IccYear учитывет высокосные года.
Anatoly Podgoretsky (2002-03-30 16:52:00) [5]Как там с 29 февраля, все в порядке?
Erlend (2002-03-30 16:42:00) [6]Unit DateUtils
Category date/time routines
function IncYear(const AValue: TDateTime; const ANumberOfYears: Integer = 1): TDateTime;
Anatoly Podgoretsky (2002-03-30 16:35:00) [7]Что у тебя в виду известно только телепатов, и на какое будущее тоже. А вот те которые скажем в 93 году тоже так утверждали, поняли это в 2000 году.
Насчет интервала в 5 лет и я все время говорю про него. Проблема 29 февраля существует в каждом 5 летнем интервале вне зависимости от ближайшего будущего.
mukha (2002-03-30 16:30:00) [8]Anatoly Podgoretsky © (30.03.02 15:55)
Я имел ввиду только интервал в 5 лет. И только на ближайшее будущее.
Anatoly Podgoretsky (2002-03-30 15:55:00) [9]mukha (30.03.02 12:40)
Извини, но ты неправильно учитываешь, возьми исходную дату например 12.02.1998 года и тебе все станет ясно, ч в данном интервеле 9 високосных лет.
drpass © (30.03.02 12:54)
Хоть прибавление, хоть декодирование - это все равно не устаняет проблемы 29 февраля, требуется анализ
mukha (2002-03-30 15:32:00) [10]MBo
Я имел ввиду обозримое будущее. А в общем - согласен.
drpass (2002-03-30 12:54:00) [11]Високосный год - год, который делится без остатка на 4 и не делится на 100, либо делится на 400. Но к чему вся эта математика, если можно взять DecodeDate+EncodeDate?
MBo (2002-03-30 12:44:00) [12]mukha
высокосный год - это каждый четвёртый год
не всегда. 1900 - нет.
mukha (2002-03-30 12:40:00) [13]Anatoly Podgoretsky
Учитывая, что высокосный год - это каждый четвёртый год, такого не случится. Поэтому в промежуток 5 лет попадёт как минимум один высокосный год.При промежутке менее 5 лет - вполне возможно.
Anatoly Podgoretsky (2002-03-30 12:21:00) [14]Я рискну предположить, что может пройти и 0 високосных лет
mukha (2002-03-30 07:43:00) [15]Тип TDateTime совместим с форматом вещественных чисел. Например: к сегодняшней дате надо добавить пять лет. Label1.Caption:=DateToStr(Date+1826); 1826=365x5+1. +1 потому, что из пяти лет один будет высокосным (в феврале 29 дней). Возможно, что за некий промежуток пяти лет попадёт и два высокосных года. Смотри по календарю.
Anatoly Podgoretsky (2002-03-29 21:59:00) [16]февраля
Anatoly Podgoretsky (2002-03-29 21:54:00) [17]Да ответ на простой вопрос, сколько дней в 5 годах и прибавь это количество.
Можно и через выше привденные функции, только будь поосторожнее с 29 апреля
vuk (2002-03-29 21:48:00) [18]см. DecodeDate, EncodeDate