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

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

Как из TDateTime получить TDateTime минус несколько часов [D5]


Страницы:   1 2

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]

А в чем сложности ?


Страницы:   1 2

Наверх

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