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

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

получение времени из DateTimePicker


SKIPtr ©   (2014-12-27 08:11:00) 

драсте подскажите как можно из DateTimePicker.Time получить результат чтоб секундах было '00'


Германн   (2014-12-29 02:21:00) [1]


> Плохиш ©   (28.12.14 23:17) [17]
>
> Для "планеровщика напоминалки" достаточно операции "больше
> либо равно", которая прекрасно работает с нецелыми типами,
>  коим и является тип DateTime.
>

Для любого планировщика.
Но хрен знает что ТС называет планировщиком, раз ему надо
> проверять чаще чем через секунду и при этом мало шансов
> шо оно будет равно

Типичный вопрос XYZ.


Andy BitOff   (2014-12-29 00:48:00) [2]

Palladin показывал эпичный код, реально существующий: if IntToStr(n) = '2' then Здесь, видимо, из той же серии


Плохиш   (2014-12-28 23:17:00) [3]

Для "планеровщика напоминалки" достаточно операции "больше либо равно", которая прекрасно работает с нецелыми типами, коим и является тип DateTime.

PS. Преобразованию в строку для сравнения явно индус какой-нибуть обучил.


sniknik   (2014-12-28 17:22:00) [4]

> и при этом мало шансов шо оно будет равно
кто ж на равно числа с плавающей запятой сравнивает... сказали же погрешность, сколько у тебя там? наприер через 10 сек +- 0.5. ну так добавь к текущему 9.5 сек, и проверяй на на больше этому результату... сработает через 9.6 пройдет, 10.1 тоже пройдет... если нужно еще и верхний предел ограничит (ексепт выдавать) ну так со вторым проверочным с + а не минус т.е. 10.5 сравнивай, уже на меньше для положительного результата и эксепта если не прошло.


SKIPtr   (2014-12-28 16:28:00) [5]


> нельзя что ли сравнить с учётом заданной погрешности?

а как это сделать
потому что сравнивать строки у которых точность до секунды возможно каждую секунду
а если сравнивать TDateTime то это еще меньше
и мне надо проверять чаще чем через секунду и при этом мало шансов шо оно будет равно
ну если только не округлить до секунд но это вопрос с которого я начал эту тему


Inovet   (2014-12-28 12:32:00) [6]

Ну и про строки. На кой чёрт в строки преобразовывать и их сравнивать? Сразу нельзя что ли сравнить с учётом заданной погрешности?


Inovet   (2014-12-28 12:29:00) [7]

> [12] SKIPtr ©   (28.12.14 07:34)

Вот я и говорю - странное решение. Почему сразу не выставить таймер на нужное время?


SKIPtr   (2014-12-28 07:34:00) [8]

а че догадывться строку полусаю через TimeToStr потом сравниваю строки
вот и сравниваю


Inovet   (2014-12-27 21:39:00) [9]

> [10] SKIPtr ©   (27.12.14 20:49)

Таймер раз в секунду сравбатывал, и строка времени сравнивалась с текущей строкой времени? Что за строки времени, я догадываюсь.


SKIPtr   (2014-12-27 20:49:00) [10]


> Странное решение. Ну если событий запланировано 100500 на
> 1 сутки, так ладно.

почему страное
таким вариантом как раз только одно задание выполняеться
а вот через SetWaitableTimer можно несколько заданий


Inovet   (2014-12-27 19:37:00) [11]

> [8] SKIPtr ©   (27.12.14 18:15)
> на TTimer делал там у меня строка текущего времени сравнивалась
> со строкой установленого времени

Странное решение. Ну если событий запланировано 100500 на 1 сутки, так ладно.


SKIPtr   (2014-12-27 18:15:00) [12]


> Для этого достаточно обычного таймера (TTimer) с установкой
> срабатывания в 1 минуту.


я использую SetWaitableTimer
на TTimer делал там у меня строка текущего времени сравнивалась со строкой установленого времени
а вот решил усовершенствовать


brother   (2014-12-27 17:27:00) [13]

Можно использовать TDXTimer, он точнее...


Jeer   (2014-12-27 17:10:00) [14]

Для этого достаточно обычного таймера (TTimer) с установкой срабатывания в 1 минуту.


SKIPtr   (2014-12-27 16:54:00) [15]

спасибо  попробую формулу


> Не проще ли не выводить секунды вовсе?

я сочиняю че то вроде планеровщика напоминалки
и он в заданое время должен че то сделать
и вот думаю если там будет 50сек то это почти следующая минута
вот поэтому хочу обнулить


MBo   (2014-12-27 13:50:00) [16]

Не проще ли не выводить секунды вовсе?


MBo   (2014-12-27 13:49:00) [17]

 dt := Now;
 dt := Floor(dt * 1440) / 1440 + 1/864000;


SKIPtr   (2014-12-27 13:39:00) [18]

а как округлить


MBo   (2014-12-27 10:09:00) [19]

Пикер тут, вобщем-то, ни при чём.
ДУмаю, стоит сформировать строку FormatDateTime и заменить секунды в строек на нули.

Округление до минут во внутреннем формате TDateTime возможно, но ненадёжно.


Наверх

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