Поделиться через


Тип DATE

Тип DATE реализуется с помощью 8-байтового числа с плавающей запятой. Дни представлены целым числом приращения, начиная с 30 декабря 1899 года, полуночи по нулю времени. Значение часа выражается абсолютным значением дробной части числа. В следующей таблице показаны несколько дат вместе с числовым эквивалентом типа DATE:

Дата и время Представление
30 декабря 1899 года, полночь 0.00
1 января 1900 года, полночь 2.00
4 января 1900 года, полночь 5.00
4 января 1900, 6 утра 5,25
4 января 1900 г., полдень 5.50
4 января 1900, 9 вечера 5.875

Тип даты DATE, а также COleDateTime класс, представляет даты и время в виде классической строки чисел. Класс COleDateTime содержит несколько методов для управления значениями DATE, включая преобразование в другие распространенные форматы дат.

При работе с этими форматами даты и времени в службе автоматизации следует отметить следующие моменты:

  • Даты указываются в локальном времени; синхронизация должна выполняться вручную при работе с датами в разных часовых поясах.

  • Типы дат не учитывают время дневной экономии.

  • Временная шкала даты становится прекращенной для значений дат меньше 0 (до 30 декабря 1899 года). Это связано с тем, что целочисленная часть значения даты обрабатывается как подписанный, а дробная часть обрабатывается как неподписанную. Другими словами, общая часть значения даты может быть положительной или отрицательной, а дробная часть значения даты всегда добавляется к общей логической дате. В следующей таблице показано несколько примеров.

Дата и время Представление
27 декабря 1899 года, полночь –3,00
28 декабря 1899 года, полдень -2.50
28 декабря 1899, полночь -2,00
29 декабря 1899 года, полночь -1,00
30 декабря 1899, 6 вечера -0.75
30 декабря 1899 года, полдень -0,50
30 декабря 1899 г., 6 утра -0,25
30 декабря 1899 года, полночь 0.00
30 декабря 1899 г., 6 утра 0.25
30 декабря 1899 года, полдень 0,50
30 декабря 1899, 6 вечера 0.75
31 декабря 1899 года, полночь 1.00
1 января 1900 года, полночь 2.00
1 января 1900 г., полдень 2,50
2 января 1900 г., полночь 3.00

Внимание

Обратите внимание, что поскольку 6:00 всегда представлен дробным значением 0,25 независимо от того, является ли целое число, представляющее день положительным (после 30 декабря, 1899) или отрицательные (до 30 декабря 1899 г.), простое сравнение с плавающей запятой ошибочно сортирует любую ДАТУ, представляющую 6:00 в день раньше 12.30.1899, как позднее , чем ДАТА, представляющая 7:00 AM в тот же день.

Дополнительные сведения о проблемах, связанных с ДАТой и типами, можно найти в разделе "Класс COleDateTime" COleDateTime и "Дата и время": поддержка автоматизации.

См. также

Дата и время
Класс COleDateTime