Mentre cercavo soluzioni per un'altra domanda, mi sono ritrovato a chiedermi se fosse possibile utilizzare la Calendarclasse .NET per implementare un calendario che non fosse basato sulle convenzioni terrene.
Ad esempio, il giorno di Marte è circa il 2,7% più lungo di un giorno qui sulla Terra:
Una convenzione utilizzata dai progetti dei lander dei veicoli spaziali fino ad oggi è stata quella di tenere traccia dell'ora solare locale utilizzando un "orologio di Marte" di 24 ore su cui le ore, i minuti ei secondi sono il 2,7% più lunghi della loro durata standard (Terra).
C'è un buon modo per implementare un MarsCalendartale che la lunghezza di un secondo è diversa da quella standard GregorianCalendar, e quindi essere in grado di utilizzare DateTimeoggetti basati su di esso per tutti gli standard AddDays(), AddHours()ecc funzioni? (Nota: idealmente, una soluzione, se esiste, sarebbe applicabile a qualsiasi forma di oggetto planetario per il quale è possibile definire sia "1 giorno" che "1 anno" di lunghezze costanti. Marte rappresenta un ottimo esempio, tuttavia )