89 votes

Mise en œuvre d’un calendrier non terrestres

Comme j'étais à la recherche de solutions pour une autre question, je me demandais si il était possible de l'utiliser .NET Calendar de la classe pour mettre en œuvre un calendrier qui n'était pas basée sur Terrestre conventions.

Par exemple, Mars jour est d'environ 2,7% de plus qu'un jour sur Terre:

Une convention utilisée par les engins spatiaux lander projets à ce jour a été de garder une trace de l'heure solaire à l'aide d'un 24 heures "Mars de l'horloge" sur laquelle les heures, les minutes et les secondes sont de 2,7% de plus que leurs standard (Terre) les durées.

Est-il une bonne façon de mettre en œuvre un MarsCalendar tels que la longueur de seconde est différent de la norme GregorianCalendar, et ainsi être en mesure d'utiliser DateTime objets en fonction pour l'ensemble de la norme AddDays(), AddHours(), etc. fonctions? (Note: dans l'idéal, une solution, si elle existe, serait applicable à toute forme de planétaire de l'objet pour lequel il est possible de définir à la fois "1 jour" et les "1 an" de la constance des longueurs. Mars est un excellent exemple, si)

13voto

Michael Hoffmann Points 713

Il y a plusieurs non-calendrier Grégorien classes dérivées System.Globalization.Calendar au sein de la Mondialisation de l'espace de noms (c - JapaneseCalendar). Vous devriez être en mesure de mettre en œuvre votre propre. J'avais concocter un exemple, mais il y a 16 méthodes abstraites dans le Calendrier de la classe...

Vous pourriez même être en mesure de simplement tirer votre classe à partir d' GregorianCalendar et de substituer l' GetMilliseconds(DateTime) méthode, de retour à la base de la valeur de retour multiplié par 1.027d.

1voto

G.Y Points 2631

La réponse est NON.

Le calendrier est le produit d'une culture.
Dans l'exemple ici-même sur la terre il y a plusieurs calendriers..
pour certaines cultures, une journée commence et se termine au lever du soleil pour d'autres, c'est le coucher de soleil..

Ce que vous pouvez faire est de décider sur une constante universelle, dans un environnement contrôlé pour être le premier point de référence.. tels que la façon atomique montre, c'est fait.. cela peut vous aider à avoir la plus petite unité de temps.. et sur qui l'on peut construire une échelle d'autres mesures, telles seconde, heure, jour et etc..
Mais vous n'avez pas vraiment besoin de ça.. la terre qui tourne, le soleil est déjà une source naturelle pour obtenir la même chose et ne nécessite pas la construction d'efforts.. il vous donnera les mêmes résultats satisfaisants précision et il a autour de 6 milliards de personnes QA communique en permanence.

Quelle est la date ou de l'heure sur mars? c'est le même que sur la terre.

Si vous voulez une "explosion" de l'unité de la façon dont nous nous saisissons le calendrier.. par la théorisation de tous les objets célestes, peut avoir sa propre heure locale... pas de problème, mais vous devez indiquer l'heure locale n'aura pas de génériques communs partagés règle, ils seront arbitre et liées à la "culture" ou à un autre arbitre de sélection par l'objet - ce qui signifie que l'analyse va être l'enfer pour calculer et devra être par objet.
(ce qui ne veut pas dire que je suis contre l'idée elle-même)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X