• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как ПО_ЧЕЛОВЕЧЕСКИ сравнить время?

  • Автор темы zaraza
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zaraza

Хочу сравнить текущее время со временнем, введённым руками в DateTimePicker.
Конечно есть вариант преобразовать время в формат "час;минута;секунда;милисекунда" а потом по очереди сравнивать часы с часами... но может кто-то чем-то нормальным в Дельфях пользуется ????
подскажите плз
 
A

admin

Я сейчас делаю прогу по работе с календарем. Я делал через EncodeDateTime. Т.е. Берешь например

Код:
DecodeDateTime(current, wYear, wMonth .... wMSecond);

и

DecodeDateTime(now, yYear...yMSecond);

и переменные сравнивал

Я пытался сравнить напрямую переменные TDateTime, но т.к. отсчет идет от 1899 года то если текущая дата старше чем искомая то не сравнивается нифига.
 
I

ironwit

сравни datetimepacker.time с функцией now
 
S

shm

Время хранится в Double

The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed.

поэтому точность там по крайней мере миллисекунда. А в TDateTimePicker вводить время можно только до секунды.
Как ни старайся, сравнение с Now будет всегда не равным. Нужно приводить все к одному формату.
 
S

shm

Сравнивать с now напрямую можно только на > или <. Но нужно еще учитывать, что если
TDateTimePicker.Kind=dtkTime, то пользователем меняется только составляющая времени в TDateTimePicker.Time,
хотя тип поля TDateTime; дата там подставляется из поля TDateTimePicker.Date - ее нужно отслеживать в коде.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!