Existe-t-il un moyen de stocker et de manipuler une période de temps prenant en compte la durée d'un mois, les années bissextiles, etc.?

StackOverflow https://stackoverflow.com/questions/1608175

Question

J'étais sur le point d'écrire cela moi-même, mais je sais que cela doit exister et je réussis simplement à éviter tous les mots clés de Google qui me mèneraient droit au but.

Je chercherais quelque chose comme DDDMMMYYY où D, M, Y sont le nombre de jours, de mois et d’années. Ainsi, 00103000 indique une durée de trois mois et un jour ou 000000001, une durée d'un an. Idéalement, ce format devrait également être appliqué de manière standard, en prenant en compte tous les pièges du calcul de la durée, tels que la variation du nombre de jours dans un mois, les années bissextiles, etc.

Je ne cherche pas de moyen de calculer un intervalle de temps entre deux horodatages connus, comme il a été demandé ici ( Calculer l'heure relative en C # ), je recherche quelque chose comme un format de chaîne spécifique que je peux stocker, qui indiquerait une période de temps à utiliser pour déterminer une seconde date inconnue à partir d'une date connue.

Tels que, en utilisant mon format fictif ci-dessus: si je disais "calculez quelle date serait 00103000 à partir du 15 septembre 2009". retournerait "le 16 décembre 2009", soit trois mois et un jour après le 15 septembre.

Était-ce utile?

La solution

Je vous conseillerais de consulter le format de ISO 8061 pour les durées. Il n’est pas seulement facile d’analyser et d’appliquer à une date donnée, il s’agit d’un standard bien connu avec beaucoup de ressources disponibles.

Déterminer la durée à partir de deux instants est un peu plus délicat, mais uniquement parce que, sans contribution de l'application, il est difficile de savoir si le 1er mars au 1er juin est de 3 mois ou de 92 jours. Néanmoins, le format peut aussi bien s’exprimer que par exemple à 0,25 ans.

Autres conseils

La représentation la plus simple et la plus courante est un chiffre: le nombre de secondes dans la période (qui peut être fractionnaire ou non, selon vos besoins). De nombreuses bibliothèques temporelles représentent le temps en secondes depuis l'époque , aussi l'addition et la soustraction sont-elles effectuées de temps trivial. Les débordements constituent un problème majeur (par exemple, le bogue de l'année 2038 ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top