Как хранить старые даты в SharePoint? - PullRequest
4 голосов
/ 01 апреля 2009

Мне нужно хранить даты в SharePoint, которые должны вернуться примерно к 5000 году до нашей эры. В идеале я хотел бы иметь возможность делать сложение / вычитание даты, например:

oldDate = '5000 BC';
newDate = '1995 AD';
DateDiff(oldDate, newDate, 'Years'); // equals 6995

Как мне поступить? Создать класс old_date на основе строк? Просто используйте обычные даты, но добавьте AD или BC, которые делают дату отрицательной?

Ответы [ 3 ]

5 голосов
/ 01 апреля 2009

Это серьезная нетривиальная проблема, которая действительно зависит от того, что именно вы хотите делать с этими датами. Например, мы использовали текущий (григорианский) календарь только с 1582 года. До этого это был юлианский календарь, а до этого - старый римский календарь. Что еще хуже, эта информация действительно только для Западной Европы (и связанных с культурой областей). Поэтому, если вы надеетесь получить что-то, что даст вам правильные даты для исторических событий с небольшой простой математикой, вас ждет большое разочарование.

Если вы просто хотите нести григорианский календарь назад, я думаю, это выполнимо. Тем не менее, все еще есть ошибка, и в этом масштабе это важно. Из Википедии:

В масштабах тысячелетий, григорианский календарь отстает сезоны, потому что замедление вращения Земли делает каждый день немного дольше с течением времени (см. прилив ускорение и скачок второй) пока год поддерживает более равномерный Продолжительность

2 голосов
/ 02 апреля 2009

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

Значения меньше нуля означают BC, а значения выше или равны нулю, означают AD.

0 голосов
/ 25 августа 2009

В итоге я сохранил даты в виде текстового поля в формате ISO 8601:
YYYY-MM-DDThh:mm:ss.sTZD

Вам не нужно хранить всю строку, например, если вы хотите сохранить 5000 BC, вы должны ввести -5000-01-01. Я не получаю сложение и вычитание даты очень легко, но было гораздо проще получить данные в нужном мне формате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...