Целые даты не TDateTime = Double

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Целые даты не TDateTime = Double

Сообщение hinst »

Есть ли нормальная библиотека для работы с датами и временем в Free Pascal, которая использует не Double для представления времени, а целые типы? Я видел в стандартной библиотеке есть какой-то тип TTimeStamp - запись с двумя полями, количество дней и количество миллисекунд, прошедших с начала дня. В общем, не знаю. Важных функций для работы с TTimeStamp я не увидел. Функции преобразования в строку нет, например, функций вычисления разницы между двумя датами в TTimeStamp нет.
В общем, я думаю, что библиотека должна быть, только я что-то не нашёл. Подскажите плз если кто знает
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

А в чём проблема?
TDateTime - целая часть - это и есть дата.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

Что касается TimeStamp - - DateTimeToTimeStamp <-> TimeStampToDateTime

В использовании целого типа вообще то нет никаких преимуществ: в первую очередь, он существенно ограничен по диапазону представляемого промежутка времени. Если что, есть еще юниксовый timestamp - число секунд с 1970-го года и функции UnixToDateTime <-> DateTimeToUnix
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

у TTimeStamp два поля по Integer: на день и на миллисекунды
2^31 дней / 365 = 5 800 000 лет
Это значит, что он представляет время от -5 800 000 года до +5 800 000 года с точностью до миллисекунды
Без плавающей арифметики. Я думаю, что это лучше чем хранить дату в Double

Добавлено спустя 1 минуту 4 секунды:
И ещё мне не нравится, что у TDateTime ноль - это 1899 год.
Ответить