C'est toujours un casse-tête pour moi - et je me rends compte que ce n'est pas strictement un problème de programmation ou de développement de logiciels, mais cela semble être un problème courant et raisonnable dans notre domaine.
Par exemple, si je devais définir une date d'expiration comme 2011-04-08 00:00:00 - et étant donné que mon heure locale actuelle est 10:45 le 8 déjà - ai-je déjà expiré? Ou ai-je encore une demi-journée?
Existe-t-il une norme universelle à laquelle appartient la fin de la journée à minuit?
Ou devrais-je prendre une feuille de l'armée britannique et dire que la journée se termine à 23:59:59 et commence à 00:00:01 et qu'il n'y a pas de minuit?
language-agnostic
time
HorusKol
la source
la source
24:00:00
est utilisé pour décrire minuit à la fin de la journée.Réponses:
Je pense que dans la programmation (oracle et php, je ne suis pas sûr des autres langues), minuit est le début d'une journée. Par exemple, si vous trunc (sysdate), vous obtiendrez 2011-04-08 00:00:00 qui est notre passé.
donc, lorsque l'horloge est passée de 23:59:59 à 00:00:00, la date a effectivement changé du 2011-04-08 au 2011-04-09
la source
Un addendum à la réponse de @Phelios, si vous avez une heure comme 00:00:00, ce n'est pas nécessairement exactement minuit. Il s'agit plutôt d'un ensemble infiniment grand de points dans le temps, qui ont tous une distance maximale <1 seconde les uns par rapport aux autres. Par exemple, tous les 00: 00: 00.345, 00: 00: 00.567 et 00: 00: 00.842 se trouvent clairement du côté du nouveau jour de minuit, mais seraient raccourcis à "00:00:00" à des fins d'affichage. De même, 23: 59: 59: 899 se trouve du côté ancien de minuit. Donc, minuit lui-même est un laps de temps infiniment court entre les jours que vous ne frapperez jamais en pratique.
la source
C'est un problème similaire au calcul des différences entre les angles en utilisant la géométrie circulaire, où par exemple, 0 degrés et 360 degrés (et 720 degrés, etc.) sont tous identiques. Quelle est donc la différence entre 350 degrés et 10 degrés?
Réponse: cela dépend de la façon dont vous souhaitez le mesurer - il peut être de 20 degrés ou 340 degrés. Mais faire le calcul des différences angulaires est en fait assez compliqué. Les calculs de différence de temps sont également désordonnés, sauf si vous convertissez en une forme interne qui fait que l'addition et la soustraction simples fonctionnent de manière conventionnelle. Ou vous utilisez une bibliothèque de classe moderne qui vous cache par magie tout cela (et n'enseigne donc jamais à personne les détails réels).
la source