Kiedy szukałem rozwiązań na inne pytanie, zacząłem się zastanawiać, czy można użyć Calendar
klasy .NET do zaimplementowania kalendarza, który nie byłby oparty na ziemskich konwencjach.
Na przykład dzień Marsa jest o 2,7% dłuższy niż dzień tutaj na Ziemi:
Konwencja stosowana do tej pory w projektach lądowników statków kosmicznych polegała na śledzeniu lokalnego czasu słonecznego za pomocą 24-godzinnego „zegara marsjańskiego”, w którym godziny, minuty i sekundy są o 2,7% dłuższe niż ich standardowe (ziemskie) czasy trwania.
Czy istnieje dobry sposób zaimplementować MarsCalendar
tak, że długość sekundy różni się od standardu GregorianCalendar
, a tym samym mieć możliwość korzystania z DateTime
obiektów na niej oparta na wszystkich standardowych AddDays()
, AddHours()
itd funkcji? (Uwaga: Idealnie byłoby, gdyby rozwiązanie - jeśli takie istnieje - miałoby zastosowanie do dowolnej formy obiektu planetarnego, dla którego możliwe jest zdefiniowanie zarówno „1 dnia”, jak i „1 roku” o stałej długości. Mars jest jednak świetnym przykładem )