Kiedy szukałem rozwiązań na inne pytanie, zacząłem się zastanawiać, czy można użyć Calendarklasy .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ć MarsCalendartak, że długość sekundy różni się od standardu GregorianCalendar, a tym samym mieć możliwość korzystania z DateTimeobiektó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 )