SharfikКоллега, вам это попадалось на глаза:
viewtopic.php?f=1&t=10027 ?
А по сути - следующее.
DateToUnix напрямую из локального времени не имеет смысла вообще. Потому что "................Результатом функции DateTimeToUnix - будет целочисленное значение содержащее количество секунд прошедшее с полуночи (00:00:00 UTC) 1 января 1970 года" - а подставляется дата НЕ В UTC. Результат будет смещен на величину смещения временной зоны на текущий момент. Различные UNIXы свой TimeStamp клепают только по времени UTC. Чтобы сработало правильно, нужно следующую конструкцию: DateTimeToUnix(LocalTimeToUniversal(date_now))
... и вот здесь следует учитывать, что все это в сущности верно только для промежутка времени
с момент последнего изменения временных зон локали до текущего момента Функция LocalTimeToUniversal ничего не знает о переводах стрелок в прошлом и будущем, об изменениях временных поясов для зоны и т.п. - т.е. для работы с датой в произвольном периоде - непригодна абсолютно.
Добавлено спустя 13 минут 47 секунд:p/s Заодно стоит задуматься над тем, что различные вычисления количества секунд, минут, часов а иногда дней между двумя датами TDateTime, располагающимися в моменты разных смещений относительно UTC, с помощью функций RTL freepascal (а возможно и Delphi), дадут неверный результат
Добавлено спустя 24 минуты 6 секунд:Вот еще повод для размышлений о соответствиях времен.
26 октября в 2:00 стрелки переводятся на час назад. То есть внезапно после 2014-10-26 01:59:59 наступает 2014-10-26 01:00:00
Контрольный выстрел в голову: в какой unix timestamp должно быть преобразовано время 2014-10-26 01:30:00 на момент запуска программы в 2014-12-01 00:00:00