Secondes ou millisecondes
L'erreur la plus fréquente dans la manipulation des dates consiste à confondre les deux. Les horodatages Unix comptent les secondes depuis le 1970-01-01 UTC ; Date.now() en JavaScript compte les millisecondes. Passez un horodatage Unix directement au constructeur Date sans le multiplier par 1000 et vous vous retrouvez en janvier 1970. En règle générale, un nombre à 10 chiffres correspond à des secondes et un nombre à 13 chiffres à des millisecondes : c'est exactement ainsi que la détection automatique tranche ici.
Les standards et leurs différences
- ISO 8601 est le standard de référence :
2024-01-15T10:30:00.000Z. Le T sépare la date de l'heure et le Z signifie UTC.
- RFC 3339 est un profil plus strict d'ISO 8601 destiné aux protocoles Internet. Il exige un décalage explicite et écrit donc
+00:00 plutôt que Z.
- ISO 9075 est la forme standard du SQL,
2024-01-15 10:30:00 — une espace au lieu du T, et pas de fuseau horaire. C'est ce qu'affichent la plupart des bases de données.
- RFC 7231 est le format de date HTTP utilisé dans les en-têtes
Date, Expires et Last-Modified, toujours en GMT.
Les deux cas particuliers
Un Mongo ObjectID fait 12 octets et les quatre premiers contiennent la date de création en secondes Unix : chaque ObjectID transporte donc un horodatage. Cet outil l'extrait au décodage ; lors de la génération, il remplit les huit octets restants de zéros au lieu d'inventer des valeurs de machine et de compteur.
Les dates série Excel comptent les jours depuis le 1899-12-30, la partie fractionnaire représentant l'heure de la journée. Cette origine étrange existe parce qu'Excel reproduit délibérément un bug de Lotus 1-2-3 qui considérait 1900 comme une année bissextile. Prendre le 1899-12-30 comme jour zéro fait correspondre correctement toutes les dates à partir de mars 1900, et c'est la raison pour laquelle ce convertisseur l'utilise.
Tout n'est qu'un seul instant
Quoi que vous saisissiez, l'outil l'analyse en un unique objet Date JavaScript et restitue ce même instant dans les onze formats. Rien n'est envoyé ailleurs — la conversion s'effectue entièrement dans votre navigateur.