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

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

как из 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


Наверх

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