Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TDateTime


Лана Розанова ©   (2002-10-01 11:17:00) 

Как к переменной TDateTime прибавить 1-у минуту?
СПАСИБО!!!


han_malign   (2002-10-01 12:27:00) [1]

2User-log
35065 дней от 12/30/1899 минус 1/24/60(одна минута) равно
35064 дня и (24*60-1)/(24*60)(23 часа и 59 минут) от 12/30/1899
как видите число уменьшилось (принцип адитивности имеет обратную силу(65535.99+0.01=65536 - день следующий))


NP-237   (2002-10-01 12:24:00) [2]

описка, надо
DateStart := EncodeDate(year,month,day)+TimeStart;


NP-237   (2002-10-01 12:20:00) [3]

Работать с датой а не с временем.

DateStart := EncodeDate(year,month,day);
DateEnd := DateStart+EncodeTime(0,1,0,0);

Ну а чистое время можно уже выдернуть.


User-log   (2002-10-01 12:12:00) [4]

А у меня так не получается:
var
DT,DateStart,TimeStart,DateEnd,TimeEnd:TDateTime;
begin
DT:=now;
DecodeTime(DT,hour,min,sec,msec);
DecodeDate(DT,year,month,day);
DateStart:=EncodeDate(year,month,day);
TimeStart:=EncodeTime(hour,min,sec,msec);
TimeEnd:=TimeStart+EncodeTime(0,1,0,0);
Как, если время стало 00:00:00, прибавить день?
end;


han_malign   (2002-10-01 11:50:00) [5]

dt:=dt+1.0/(60*24);{1 день/24 часа/60 минут}
поскольку TDateTime это дробное количество дней прошедших с 12/30/1899 (причем и в сторону убывания тоже)- то учтутся все переходы
З.Ы. На самом деле самое сложное это конвертация DateTime в реальное время и обратно, но это уже все сделано.
Из help-а
0 12/30/1899 12:00 am
2.75 1/1/1900 6:00 pm
-1.25 12/29/1899 6:00 am
35065 1/1/1996 12:00 am


NP-237   (2002-10-01 11:44:00) [6]

Конечно. Ведь TDateTime - это обычный тип Double.
Я например последний день месяца определяю как
EnCodeDate(2002,6,1)-1


Лана Розанова   (2002-10-01 11:38:00) [7]

А если min=59 она учтет переход часа, дня, месяца, года?


NP-237   (2002-10-01 11:22:00) [8]

+EncodeTime(Hour, Min, Sec, MSec: Word)
+ EncodeTime(0, 0, 1, 0)


Наверх

Титульная страница Поиск, карта сайта Написать письмо