Внедрение неземного календаря
Как я искал решения для другого вопроса, мне стало интересно, можно ли использовать .NET Calendar
для реализации календарь, который не был основан на земных конвенциях.
Например, день Марса составляет около 2.7% больше, чем день здесь, на Земле:
Конвенция, используемая в настоящее время проектами самолета-спутника, заключалась в том, чтобы отслеживать местное солнечное время с использованием 24-часовых "часов Марса", по которым часы, минуты и секунды на 2.7% больше, чем их стандартные (Земля) продолжительности.
Есть ли хороший способ реализовать MarsCalendar
, чтобы длина секунды отличалась от стандартной GregorianCalendar
и, следовательно, могла использовать объекты DateTime
на основе этого для всех стандартных AddDays()
, AddHours()
и т.д. функции? (Примечание. В идеале решение - если оно существует - применимо к любой форме планетарного объекта, для которого можно определить как "1 день", так и "1 год" согласованной длины. например, хотя)
Ответы
Ответ 1
В пространстве имен глобализации (например, JapaneseCalendar
) существует несколько классов, не относящихся к григорианскому календарю, полученных из System.Globalization.Calendar
. Вы должны иметь возможность реализовать свои собственные. Я бы взломал образец, но в классе Calendar есть 16 абстрактных методов...
Вы даже можете просто получить свой класс из GregorianCalendar
и просто переопределить метод GetMilliseconds(DateTime)
, возвращая базовое возвращаемое значение умноженное на 1.027d
.
Ответ 2
Ответ НЕТ.
Календарь - это продукт культуры.
В примере даже здесь на земле есть несколько календарей..
для некоторых культур день начинается и заканчивается на восходе солнца для других, это закат.
Что вы можете сделать, так это решить, какая какая-то универсальная константа в контролируемой среде должна быть исходной точкой отсчета.. например, как производится атомный вахта.. это может помочь вам в наименьшее время... и на этом вы можете построить масштаб других мер, таких как второй, час, день и т.д.
Но вам это действительно не нужно. Земля, которая вращает солнце, уже является естественным источником, чтобы получить то же самое и не требует никаких усилий по строительству. Он даст вам одинаковые результаты с удовлетворительной точностью и имеет около 6 миллиардов человек QA'ing это непрерывно.
Какова дата или время на Марсе? это то же самое, что и на земле.
Если вы хотите "взорвать" единство того, как мы понимаем календарь, теоретизируя, что каждый небесный объект может иметь свое местное время... нет проблем - но вы должны признать, что локальные времена не будут иметь общего общего общее правило, они будут арбитром и связаны с "культурой" или каким-либо другим выбором арбитра для каждого объекта, а это означает, что разбор будет ад для вычисления и должен быть для каждого объекта.
(это не значит, что я против самой идеи)