Пока я искал решения для другого вопроса, мне стало интересно, можно ли использовать Calendar
класс .NET для реализации календаря, не основанного на земных соглашениях.
Например, день Марса примерно на 2,7% длиннее, чем день здесь, на Земле:
На сегодняшний день в проектах посадочных модулей космических кораблей используется соглашение об отслеживании местного солнечного времени с использованием 24-часовых «марсианских часов», на которых часы, минуты и секунды на 2,7% длиннее их стандартной (земной) продолжительности.
Есть ли хороший способ реализовать MarsCalendar
таким образом, что длина второго отличается от стандарта GregorianCalendar
, и , таким образом , иметь возможность использовать DateTime
объекты на его основе для всех стандарт AddDays()
, AddHours()
и т.д. функции? (Примечание: в идеале решение - если оно существует - было бы применимо к любой форме планетарного объекта, для которого можно определить как «1 день», так и «1 год» постоянной длины. Тем не менее, Марс является отличным примером )