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