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

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

zaraza

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

admin

Well-known member
08.08.2003
2 754
0
#2
Я сейчас делаю прогу по работе с календарем. Я делал через EncodeDateTime. Т.е. Берешь например

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

и

DecodeDateTime(now, yYear...yMSecond);

и переменные сравнивал
Я пытался сравнить напрямую переменные TDateTime, но т.к. отсчет идет от 1899 года то если текущая дата старше чем искомая то не сравнивается нифига.
 
S
#4
Время хранится в 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
#5
Сравнивать с now напрямую можно только на > или <. Но нужно еще учитывать, что если
TDateTimePicker.Kind=dtkTime, то пользователем меняется только составляющая времени в TDateTimePicker.Time,
хотя тип поля TDateTime; дата там подставляется из поля TDateTimePicker.Date - ее нужно отслеживать в коде.
 
Статус
Закрыто для дальнейших ответов.