4.5. Функции даты

4.5. Функции даты

Назначением данного раздела является ознакомление с различными методами, которыми даты представляются в приложениях, и установление стандарта для нотации даты.

Функции даты связаны с тем, как приложение или процесс использует и вычисляет даты. Существует много различных способов использовать даты, например, преобразование григорианской даты в юлианскую и обработка относительных форматов даты. Варианты решения проблемы 2000 года часто связаны с эффектами инверсии и логикой високосного года. При наличии стандартной функции даты можно легко определять даты и выполнять операции с ними.

Проблемы

До проектирования или приобретения функции даты должны рассматриваться следующие проблемы.

Эффекты инверсии вызываются программами, которые интерпретируют "00" скорее как "1900", чем "2000", и по ошибке выполнят вычисления, скорее, на 99 лет в прошлое, чем на 1 год в будущее.

Нестандартная логика включает следующее:

- Общие соображения относительно логики даты могут быть различными, сложными или простыми, но большей частью логика даты оформляется в виде специальных подпрограмм даты.

- Поиск текущей даты определяет, отыскивается ли текущая дата из предопределенного источника, такого, как файл, таблица или компьютерные часы. Доморощенные методы часто реализуют "хитрое" использование поиска даты. Их трудно понять, трудно сопровождать, и они очень неэффективны.

- Усечение высокого порядка происходит, когда вычисления идут полностью неправильно и промежуточные переменные слишком малы, чтобы сохранить результаты. В таком случае могут быть потеряны знак и / или наиболее значимые цифры.

- Значения даты по умолчанию могут использоваться беспорядочно, без какого-либо учета 2000 года. Использование дат по умолчанию очень трудно отслеживать, оно может преподнести неприятные сюрпризы.

Прочие проблемы

- Когда дата является частью ключа, существует риск, что даты со значениями года "00" будут отыскиваться перед датами со значениями года "99", хотя "2000" идет после "1900".

- Даты и логика даты могут находиться в макрокомандах, Wylbur Execs, CMS Execs, Rexx Execs, запросах, отчетах, триггерах, процедурах, функциях и т.д.

- Даты, которые встроены в имена наборов данных или внутри структур данных.

Логика високосного года состоит из трех правил високосного года, как определено в 1582 году римским папой Григорием XIII:

- если год делится без остатка на 4, то он является високосным;

- если год делится без остатка на 100, то он не является високосным;

- если год делится без остатка на 400, то он является високосным.

Год 2000-й - високосный год.

Рекомендуемый подход

Установите стандарт для нотации даты.

Проанализируйте и выберите продукт функции даты, который лучше всего подходит для приложения. Эти продукты разделяются на следующие пять категорий:

- имитаторы системной даты;

- анализаторы кода;

- дополнительная функция даты;

- улучшения (upgrades) языка;

- преобразователи (конверторы) баз данных.

Советы

Рекомендуемым стандартом даты является нотация даты стандарта ISO 8601. Международной стандартной нотацией даты является YYYY - MM - DD.

Преимущества нотации даты стандарта ISO 8601 по сравнению с другими обычно используемыми вариантами:

- легко читается и записывается программным обеспечением;

- легко сравнивается и сортируется с помощью обычного сравнения строк;

- не зависит от языка;

- не может быть спутана с другими популярными нотациями даты;

- короткая и имеет постоянную длину;

- представление года четырьмя цифрами позволяет избежать проблем переполнения после 1999-12-31.