![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как из TDateTime получить TDateTime минус несколько часов [D5]
Vitaly © (2006-12-21 16:45:00)?
Jeer (2006-12-21 17:38:00) [21]
> Vitaly © (21.12.06 16:45)
Еще раз, для тех кому лень справку читать или по англицки не в зуб ногой или лень переводчик включить.
TDateTime - это тип double, где целая часть - число суток, в которых 24 земных часа, а дробная часть - часть времени от одних суток.
Значит, чтобы вычесть из даты dt: TDateTime несколько часов iH: integer (например), надо эти часы привести к отношению iH / 24.0 и вычесть из даты:
dt := (dt - iH / 24.0);
Как и отмечено справедливо выше в [12]
Vitaly (2006-12-21 17:35:00) [22]> novill © (21.12.06 17:30) [13]
да, нет у меня такого модуля
> iXT © (21.12.06 17:29) [12]
спасибо (сам не сообразил), но проблема осталась...
какого ляда он прибавляет часы?
причем если через день переходит - то день убавляет на один.
Ничего не понимаю!
BOB16 (2006-12-21 17:32:00) [23]Согласен с >[12]
TDateTime:=TDateTime-h/24.0//h: кол-во часов
novill (2006-12-21 17:30:00) [24]> [11] Vitaly © (21.12.06 17:23)
ты [7] пробовал?
iXT (2006-12-21 17:29:00) [25]TDateTime:=TDateTime-h/24 //h: кол-во часов
Vitaly (2006-12-21 17:23:00) [26]Чего это меня в другой форум выбросили...Ну да бог с ними :)
Vitaly (2006-12-21 17:22:00) [27]Это весь код по событию дблклик формы
Anatoly Podgoretsky (2006-12-21 17:20:00) [28]> Vitaly (21.12.2006 17:20:08) [8]
Не видать, приводи код
Vitaly (2006-12-21 17:20:00) [29]> Anatoly Podgoretsky © (21.12.06 17:12) [6]
это я пробовал и получил такие разные результаты. Почему?
> novill © (21.12.06 17:12) [7]
у меня в D5 нет такой функции
novill (2006-12-21 17:12:00) [30]> [0] Vitaly © (21.12.06 16:45)
модуль Dateutils
функция IncHour
F1 по необходимости
Anatoly Podgoretsky (2006-12-21 17:12:00) [31]> Vitaly (21.12.2006 17:06:05) [5]
Вот это ты зря закоментировал, это как раз операция с TDateTime +/- константа/переменная, все остальное можно выкинуть.
Vitaly (2006-12-21 17:06:00) [32]может я чего не понимаю или заработался :)
var ss: string;
d,t: TDateTime;
begin
ss := '06/12/21 14:50:16';
d := EncodeDate( strToInt(copy(ss,1,2)),
strToInt(copy(ss,4,2)),
strToInt(copy(ss,7,2)));
t := EncodeTime(strToInt(copy(ss,11,2)),
strToInt(copy(ss,14,2)),
strToInt(copy(ss,17,2)), 0);
replaceTime(d, t);
// d := d - EncodeTime(5, 0,0,0); //дата получается ПЛЮС 5 часов
// d := now - EncodeTime(5, 0,0,0); //дата получается МИНУС 5 часов
caption := FormatDateTime('yy"/"mm"/"dd hh":"nn":"ss', d);
end;
Чапаев (2006-12-21 16:59:00) [33]> [2] sicilla © (21.12.06 16:50)
1899
Anatoly Podgoretsky (2006-12-21 16:51:00) [34]> Vitaly (21.12.2006 16:45:00) [0]
TDateTime - константа=несколько часов или переменная
sicilla (2006-12-21 16:50:00) [35]var T1,T2: TDateTime
T1 := Now;
T2 := T1 - strtodatetime('30.12.1890 00:05:00');
30.12.1890 - я не уверен что правильно, но эту дату (проверь и измени), должна выдавать функция datetimetostr(0)
Сергей М. (2006-12-21 16:47:00) [36]А в чем сложности ?