![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сравнить две даты [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 часов)