Quand on pense aux dates et aux heures - est-ce que minuit est dans le passé ou le futur?

9

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?

HorusKol
la source
attendez attendez, où est votre emplacement? quelle date est-il maintenant? 08 ou 07?
Sufendy
sry - a précisé que je suis déjà le 8 (je suis à Adélaïde, SA)
HorusKol
1
Donc, vous demandez essentiellement que 00:00:00 est plus petit ou plus grand que 10:45:00?
Martin York
Je prendrais la feuille. De nombreuses organisations qui traitent des horaires évitent 00:00:00 (et 12:00:00). Il existe également une certaine confusion au sujet des désignateurs AM / PM pour les pays qui n'utilisent pas d'horloges 24 heures.
dbasnett
Dans certains contextes, 24:00:00est utilisé pour décrire minuit à la fin de la journée.
CodesInChaos

Réponses:

17

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

Sufendy
la source
2
Oui, la journée se déroule à minuit, qui est 00:00:00.
rapid_now
Ceci est correct AFAIK. Une confusion peut être que dans un discours informel, "minuit aujourd'hui" signifie probablement minuit à la fin de la journée, car c'est plus probablement avant que les gens ne se couchent, qu'après leur réveil.
Jack V.
3

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.

T-Bull
la source
C'est une fois qu'il est important de faire la différence entre la théorie et la pratique «présumée» : en pratique, un utilisateur tapant une date / heure pourrait à peine être dérangé pour taper les secondes; sans parler des millisecondes. En pratique, un dispositif de chronométrage qui détermine l'heure d'un événement peut ne pas prendre en charge les millisecondes. En pratique, même si un périphérique de synchronisation prend en charge les millisecondes, il n'y a aucune garantie que le format de stockage ne soit pas arrondi / tronqué une partie du temps pour une raison quelconque.
Désillusionné le
1

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).

vite_maintenant
la source
dans les deux cas, vous spécifiez un seul sens autour de l'horloge (ou cercle) comme «positif»
HorusKol
Vrai. Cependant, écrire le code pour faire le calcul et le faire correctement à chaque fois nécessite un peu de réflexion.
quick_now