Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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




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




Наверх





Память: 0.74 MB
Время: 0.043 c
14-32966          FLIZ                  2002-03-04 15:21  2002.04.11  
Кто сталкивался с такой проблемой после установки Офиса 2000?


1-32768           GMV                   2002-03-30 22:27  2002.04.11  
Memo1.Text


1-32844           IronHawk              2002-03-28 16:40  2002.04.11  
Как в обыкновенном *.TXT файле поудалять одинаковые строки ?


1-32720           vlv                   2002-03-28 16:58  2002.04.11  
Где лежат изображения стандартных VCL - компонентов?


14-32969          oblom                 2002-03-05 14:36  2002.04.11  
задание в универе