Вниз
Скачать: CL | DM;

Математические действия с датой (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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.01 c
1-32752
michael_B
2002-03-30 17:48
2002.04.11
Как отображать текст в TPanel или TLabel в несколько строк


1-32905
vpc_
2002-03-29 23:44
2002.04.11
Как изменить системную дату на компьютере с помощью Delphi.


1-32764
Konsul
2002-03-31 00:25
2002.04.11
Taskbar


1-32866
LazorenkoX
2002-03-29 13:03
2002.04.11
file of XXX


6-32928
Hecker
2002-01-29 13:50
2002.04.11
Hello All !!! кто сталкивался со следующей проблемой?




   Наверх