![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как из TDateTime вычесть к примеру 5 минут? [D2005, 2003]
Rentgen © (2007-01-10 11:06:00)Всем привет!
как выполнить вычетание из даты_время?
формат TDateTime;
как из TDateTime вычесть к примеру 5 минут?
пробовал:
dtNow-StrToDateTime("1.1.0 0:00:05");
dtNow-StrToDateTime("0.0.0 0:00:05");
чето не выходит :(
Anatoly Podgoretsky (2007-01-10 12:27:00) [1]> alex_*** (10.01.2007 11:56:14) [14]
> чего там избыточного:
> Result := ((AValue * MinsPerDay) + ANumberOfMinutes) / MinsPerDay;
Вместо того, что бы сделать A - B
Еще красивее функция IncDay
evvcom (2007-01-10 12:04:00) [2]> [16] Джо © (10.01.07 12:00)
Да еще помогает понять ту самую природу :)
Джо (2007-01-10 12:00:00) [3]>
>
> [14] alex_*** © (10.01.07 11:56)
> чего там избыточного:
> Result := ((AValue * MinsPerDay) + ANumberOfMinutes) / MinsPerDay;
Result := Dt - 5/24/60
это гораздо менее избыточно, не так ли? ;)
Джо (2007-01-10 11:59:00) [4]> [14] alex_*** © (10.01.07 11:56)
> чего там избыточного:
> Result := ((AValue * MinsPerDay) + ANumberOfMinutes) / MinsPerDay;
Ну, хотя бы то, что придется подключать дополнительный модуль.
А так как у спрашивающего вообще отсутствует понимание природы типа TDateTime, то неплохо, что ему эту природу тут разъясняют, если Справку прочитать было некошерно.
alex_*** (2007-01-10 11:56:00) [5]чего там избыточного:
Result := ((AValue * MinsPerDay) + ANumberOfMinutes) / MinsPerDay;
evvcom (2007-01-10 11:56:00) [6]> [11] Джо © (10.01.07 11:51)
> Вместо этого ты зачем-то конвертируешь его из строки.
Плюс рискует нарваться на региональные настройки. А это уже не фича, это конкретный баг.
Джо (2007-01-10 11:52:00) [7]В крайнем случае — IncMinute, да и то явно избыточно для такой простой задачи.
Джо (2007-01-10 11:51:00) [8]> [9] Rentgen © (10.01.07 11:42)
>
> > Джо © (10.01.07 11:35) [7]
> > > [5] Rentgen © (10.01.07 11:15)> Точно. Спасибо!> вот
>
> > так:> TDateTime dtNow = Now();> ShowMessage(TDateTimeToStr(dtNow-
>
> > StrToTime("0:05:00"));Ужас.
>
> Объясните. Почему ужас?
Потому, что пять минут — это вещественное число, равное 0.003472222222 (5/24/60). И нужно просто из твоей даты его вычесть. Вместо этого ты зачем-то конвертируешь его из строки. Зачем? Это неоптимально и такой подход ужасен и крайне непрофессионален.
alex_*** (2007-01-10 11:50:00) [9]
> Объясните. Почему ужас?
Зачем лишний раз парсить строку чтоб получить время? Можно напрямую работать с числом.
Rentgen (2007-01-10 11:42:00) [10]
> Джо © (10.01.07 11:35) [7]
> > [5] Rentgen © (10.01.07 11:15)> Точно. Спасибо!> вот
> так:> TDateTime dtNow = Now();> ShowMessage(TDateTimeToStr(dtNow-
> StrToTime("0:05:00"));Ужас.
Объясните. Почему ужас?
icWasya (2007-01-10 11:38:00) [11]Какой самый извращенный способ проверить в условии if () булевскую переменную ?
bool b;
b = false;
if (b == true){...}
Это децкий лепет
ИТАК, ПЕРВОЕ МЕСТО
Знакомый говорит что нашел только что в коде:
if (b.ToString().length < 5){...}//java
Джо (2007-01-10 11:35:00) [12]> [5] Rentgen © (10.01.07 11:15)
> Точно. Спасибо!
> вот так:
> TDateTime dtNow = Now();
> ShowMessage(TDateTimeToStr(dtNow-StrToTime("0:05:00"));
Ужас.
Desdechado (2007-01-10 11:31:00) [13]Вот извращенец!
Тебе же столько нормальных способов дали, а ты перректально целоваться с датой лезешь.
Rentgen (2007-01-10 11:15:00) [14]Точно. Спасибо!
вот так:
TDateTime dtNow = Now();
ShowMessage(TDateTimeToStr(dtNow-StrToTime("0:05:00"));
alex_*** (2007-01-10 11:12:00) [15]круто. Нормальные герои всегда идут в обход?
p.s. IncMinute
evvcom (2007-01-10 11:11:00) [16]> [0] Rentgen © (10.01.07 11:06)
varDateTime - 5/24/60 или
varDateTime - 5/MinsPerDay
Sergey13 (2007-01-10 11:10:00) [17]> [0] Rentgen © (10.01.07 11:06)
1=сутки. Дальше сам считай. А вычитание делается вычитанием.
alex_*** (2007-01-10 11:08:00) [18]см. DateUtils