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

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

Разность дат [D5, WinME, WinXP]


Керик ©   (2003-01-05 13:39:00) 

Прошу подсказать - как определить разность между двумя датами типа TSystemTime или TDateTime? Заранее благодарю!


Керик   (2003-01-10 22:40:00) [1]

Должна же быть функция, определяющая хотя бы количество дней, часов, минут, секунд, миллисекунд между двумя датами <font color="red"> по календарю</font>, т.е. с учётом количества дней в каждом конкретном месяце конкретного года. Ведь есть же функция DayOfWeek, определяющая день недели по конкретной дате, т.е. учитывающая конкретный год, месяц! Вот бы кто-нибудь грамотный товарищ примерчик привёл.


Думкин   (2003-01-09 07:45:00) [2]

ну да, и в году сколько дней?


Anatoly Podgoretsky   (2003-01-09 07:41:00) [3]

Ответь сколько дней в месяце, и допустим ты получил разность (d2-d1) 29 дней - это что, вот попробуй перевести это на бумаге, интересует ответ в твоем формате, оснобенно в части дней/месяцев


Керик   (2003-01-09 07:28:00) [4]

Separator, а примерчик можешь подкинуть?


Separator   (2003-01-09 05:40:00) [5]

Переведи все к милесекундам, а там уже и вычитай


Керик   (2003-01-09 05:22:00) [6]

Хочу определить сколько лет, месяцев, дней, часов, минут, секунд, миллисекунд между двумя датами.


Smithson   (2003-01-08 17:24:00) [7]

Правильно получается. Now-Now = 0, а ноль Delphi понимает как тот самый 1899 год.
Опиши точнее, что тебе надо?.


Anatoly Podgoretsky   (2003-01-08 17:23:00) [8]

Керик (08.01.03 17:17)
С какиз пор разность дат являет датой, это какая же у тебя будет дата 2.01.2003-1.01.2003


Delirium^.Tremens   (2003-01-08 17:20:00) [9]

Now - Now ? Это прикольно. Мы что же сеймомент с симмоментом сравниваем?


Керик   (2003-01-08 17:17:00) [10]

Я делаю так, но в этой разнице где обе даты абсолютно одинаковы, у меня получается 1899 год, 12 месяц и 30 день! Как это исправить? Вот как я это делаю:

procedure Example;
var D1, D2, D3: TDateTime;
D4: TSystemTime;
begin
D1 := Now;
D2 := Now;
D3 := D2-D1;
DateTimeToSystemTime(D3, D4);
D4.wYear := D4.wYear + 0;
ShowMessage(Format("%d.%d.%d %d:%d:%d:%d", [D4.wYear, D4.wMonth, D4.wDay, D4.wHour, D4.wMinute, D4.wSecond, D4.wMilliSeconds]));
end;


Anatoly Podgoretsky   (2003-01-07 10:58:00) [11]

Для TDateTime сам бог велел использовать страндартный метематический операто МИНУС
Разница := D1-D2


Керик   (2003-01-07 09:44:00) [12]

А как сравнить? Пример, если можно :-)


Delirium^.Tremens   (2003-01-05 13:57:00) [13]

:-) Остановимся на SystemTimeToDateTime :-)


Delirium^.Tremens   (2003-01-05 13:56:00) [14]

А есть еще и DateTimeToSystemTime


Delirium^.Tremens   (2003-01-05 13:55:00) [15]

Sorry, EncodeDateTime


Delirium^.Tremens   (2003-01-05 13:54:00) [16]

EncodeDate(вставить нужное из записи TSystemTime) и сравнивай полученное с TDateTime


Наверх

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