Enquanto procurava soluções para outra questão, me perguntei se seria possível usar a Calendar
classe .NET para implementar um calendário que não fosse baseado nas convenções terrestres.
Por exemplo, o dia de Marte é cerca de 2,7% mais longo do que um dia aqui na Terra:
Uma convenção usada por projetos de sondas espaciais até agora tem sido manter o controle da hora solar local usando um "relógio de Marte" de 24 horas no qual as horas, minutos e segundos são 2,7% mais longos do que suas durações padrão (Terra).
Existe alguma boa maneira de implementar uma MarsCalendar
tal forma que o comprimento de um segundo é diferente do padrão GregorianCalendar
, e, assim, ser capaz de usar DateTime
objetos com base nele para todo o padrão AddDays()
, AddHours()
etc. funções? (Nota: Idealmente, uma solução - se houver - seria aplicável a qualquer forma de objeto planetário para o qual seja possível definir "1 dia" e "1 ano" de comprimentos consistentes. Marte é um ótimo exemplo, embora )