Подтвердить что ты не робот

Каков наилучший способ обработки дат до Рождества Христова в С#/. NET?

Есть ли встроенная поддержка? А если нет, существует ли какой-либо консенсус относительно обработки таких дат?


Ссылки на собственные закодированные решения или их фрагменты приветствуются.

4b9b3361

Ответ 2

Если вы ссылаетесь на обработку значений DateTime < DateTime.MinValue, тогда я думаю, что единственный "консенсус" - не использовать System.DateTime, чтобы попытаться представить их.

Любой консенсус, вероятно, будет существовать только внутри сообщества, которое работает с такими датами. В какой области вы работаете? Астрономия?


Независимо от области интересов, вероятно, будут другие, которые испытали эту же проблему. Сначала я бы сделал некоторые исследования, особенно если ваши даты когда-либо понадобится для взаимодействия с другим программным обеспечением в этой же области интересов. Даже если вам нужно закодировать свои собственные, вы, по крайней мере, можете узнать о проблемах, которые другие испытывали при кодировании своих собственных.

Ответ 3

Я знаю, что этот вопрос старый, но я нашел его в поиске и могу добавить дополнительную информацию в эту тему. В комментариях выше кто-то полагал, что разница в дате будет больше 1 года. Если никто не планирует возвращаться к времени задолго до того, как точные даты могут быть полезны (много тысяч лет), это не так. Дифференциал, необходимый как для юлианских дат, так и по григорианским датам, - это всего лишь небольшое количество дней, конечно, менее 3 недель на любую конкретную дату, которую можно разумно попытаться извлечь из сохранившихся исторических записей. Для этой цели существуют таблицы преобразования. Я считаю, что большая проблема связана с преобразованием в григорианский календарь.

Различные страны, конвертированные в разное время, теряли разное количество дней, когда они конвертировались, потому что они не конвертировались одновременно. Для примера того, как произошло преобразование, представьте себе, что сегодня 1 октября, а завтра будет 10 октября. В этом случае преобразование приведет к потере 9 дней в этой конкретной стране. Другая страна, которая через некоторое время переделала, возможно, потеряла 11 дней или 12 дней или 13 дней и т.д. Еще одна большая проблема заключалась бы в том, чтобы вывести сезон на определенную дату. Из-за неточных календарей прецессия равноденствий привела к быстрому прогрессированию сезонов через календарный год с течением времени. Сегодня в июле мы проводим лето в северном полушарии. 3000 лет назад, этот календарный месяц, возможно, произошел в середине зимы, если мы используем юлианский календарь в качестве нашего стандарта.

Также важно отметить, что в древнем мире использовалось большое количество древних календарных систем. Как солнечные, так и лунные сорта существовали, и не было реалистично эффективной попытки стандартизации до 2000 лет назад (когда был изобретен Юлианский календарь). Люди часто пытаются повторить юлианские даты намного дальше в историю, но эти усилия являются анахронизмом. Из-за неопределенности, вызванной несогласованными записями, невозможно определить конкретное событие, произошедшее в определенную дату, коррелированную с юлианским календарем, за исключением кругового пути, который предполагает довольно большой погрешность. Для события, имевшего место до первого тысячелетия до н.э., эта погрешность может составлять 50 или 100 лет (или более в определенные периоды). У нас просто нет записей, чтобы установить предельно точную временную шкалу. Углеродные даты, полученные из последовательностей древовидных колец, коррелированных с существующими записями, помогли уменьшить пределы погрешности в разных регионах и периодах, но они не составляют полностью связанную запись, и мы всегда будем иметь погрешность для решения.