Какая структура данных рекомендуется для нескольких календарей, дат и продолжительности?

У меня есть требование хранить даты и продолжительность, вытекающие из нескольких разных календарей. В частности, мне нужно хранить даты, которые:

  1. Охватывают изменение григорианских календарей в разных странах в разное время
  2. Охватывают исторический период не менее 500 лет
  3. Работают с несколькими типами календаря - лунным, солнечным, Китайский, Финансовый, Христианский, UTC, Мусульманский.
  4. Учитывать изменение в Великобритании конца года с 31 марта на 31 декабря и сопоставимые изменения в других странах.

Мне также необходимо сохранить продолжительность, которая Я определил как разницу между двумя отметками времени (дата и время). Это подразумевает необходимость иметь возможность хранить «нулевую» дату - так что я могу хранить длительность, скажем, три с половиной часа; или 10 минут.

У меня есть детали необходимых вычислений. Отметка времени Firebird основана на функции даты, которая начинается с 1 января 100 г. н.э., поэтому не может использоваться в течение продолжительности так, как мне нужно их записывать. Вдобавок этот тип данных настроен (как и большинство функций меток времени) для записи количества дней, прошедших с базовой даты; он не предназначен для записи календарных дат.

Кто-нибудь может предложить:

  1. структуру данных для хранения дат и продолжительности, которая соответствует указанным выше требованиям ИЛИ
  2. Ссылка на такую ​​структуру данных ИЛИ
  3. Рекомендации по предложению приблизиться к структурированию такого хранилища ИЛИ
  4. Любые моменты, которые могут помочь мне найти решение.

РЕДАКТИРОВАТЬ:

@Warren P предоставил отличную работу в своих ответах. Очевидно, я недостаточно ясно объяснил, что ищу, поскольку его работа сосредоточена на вычислениях и на том, как их вычислять. Все ценные и полезные вещи, но не то, что я хотел передать своим вопросом.

У меня есть детали всех вычислений, необходимых для преобразования между различными представлениями дат, и у меня есть довольно хорошее представление о том, как их реализовать (с использованием таких элементов, как предлагает Уоррен). Однако мое требование - СОХРАНИТЬ даты, которые соответствуют различным критериям, перечисленным выше. Пример: сохраняемая дата - «Третье июня 13 Карл II». Я пытаюсь определить подходящую структуру для хранения таких дат.

РЕДАКТИРОВАТЬ:

Я изменил предложенную мной схему. Я перечислил атрибуты в каждой таблице и определил таблицы и атрибуты на примерах, приведенных в третьем разделе окна сущности. Я использовал пример, приведенный в этом вопросе и ответе в моем определении на примере, и изменил пример в моем вопросе для соответствия. Хотя я доказал свою схему, описав чей-то еще пример, эта схема все же может быть слишком сложной; сверх проанализированы; упустить некоторые очевидные упрощения и может оказаться очень трудным для реализации (на самом деле, это может быть совершенно неправильно). Любые комментарии или предложения приветствуются.

enter image description here

20
задан Community 23 May 2017 в 10:32
поделиться