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

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

Как сравнить две даты [D7, WinXP]


-=DeMoH=- ©   (2007-05-17 09:57:00) 

Допустим что у нас есть строка в которой находится дата в полном формате (например '12.05.2007 12:47:56'). нужно сравнить ее с текущей датой и в результате получить сколько суток прошло с первой даты до текущей...


ЮЮ   (2007-05-17 11:19:00) [1]

результат почему то 0

Не верю. В результате - ощидаемые 19.5:

procedure TForm1.Button1Click(Sender: TObject);
begin
 Application.MessageBox(
   PChar(
     DateTimeToStr( Now() - 19.5 ) + #13 +
     FloatToStr(
       StrToDateTime( DateTimeToStr( Now() ) ) -
       StrToDateTime( DateTimeToStr( Now() - 19.5 ) )
     )
   ),
   PChar(DateTimeToStr(Now())),
   0
 )
end;


-=DeMoH=-   (2007-05-17 11:03:00) [2]

и как работать с DaysBetween


-=DeMoH=-   (2007-05-17 11:02:00) [3]

точно такой - в нее загонялось по принципу datetostr(date)+' '+timetostr(time);
но несколькими днями раньше


ЮЮ   (2007-05-17 10:53:00) [4]

а str точно имеет в твоем случае вид '17.05.07 10:46:15'. Если другой, то strtodatetime применять не совсем корректно.


Kolan   (2007-05-17 10:51:00) [5]

> суток прошло с первой даты до текущей…

DaysBetween


-=DeMoH=-   (2007-05-17 10:46:00) [6]

пишу так:

     str:=datetostr(date)+' '+timetostr(time);
     jok:=strtodatetime(str)-strtodatetime(dbedit21.Text);

где jok - типа double
в dbedit21,text находится '26.04.2007 14:56:12'
результат почему то 0


Loginov Dmitry   (2007-05-17 10:07:00) [7]

StrToDateTime() - вернет дату в вещественном формате.

Путем вычитание это даты из текущей (Now) получишь разницу - то что и требуется, причем в долях суток.
Можешь округлить (Trunc, Round)


ЮЮ   (2007-05-17 10:07:00) [8]

Привести строку к TDateTime и найти разницу с Now() или Date(). Целая часть и будет разностью в целых сутках. Дробная - часть суток ( 0.5 = 12 часов)


Наверх

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