FAQ sur les timestamps Unix

Réponses rapides aux questions les plus courantes sur les timestamps Unix — unités, gestion des fuseaux, problème de l'an 2038, conversions propres à chaque langage et plus.

Foire aux questions

Qu'est-ce qu'un timestamp Unix ?
Un timestamp Unix est le nombre de secondes écoulées depuis l'epoch Unix — le 1er janvier 1970 à 00:00:00 UTC. C'est un entier neutre au langage et indépendant du fuseau qui identifie de façon unique n'importe quel moment dans le temps.
Qu'est-ce que l'epoch Unix ?
L'epoch Unix est le 1er janvier 1970 à 00:00:00 UTC. Tous les timestamps Unix sont mesurés vers l'avant — ou vers l'arrière pour les valeurs négatives — à partir de ce point de référence fixe. Le choix de 1970 était pratique : c'était une année récente et ronde quand Unix était conçu chez Bell Labs.
Quelle est la différence entre un timestamp à 10 et à 13 chiffres ?
Un timestamp à 10 chiffres (p. ex. 1700000000) représente des secondes depuis l'epoch. À 13 chiffres (p. ex. 1700000000000), il représente des millisecondes. Date.now() de JavaScript renvoie des millisecondes ; la plupart des appels système Unix et des langages comme Python, Go et PHP renvoient des secondes par défaut.
Pourquoi JavaScript utilise-t-il des millisecondes plutôt que des secondes ?
L'API Date de JavaScript a été conçue pour correspondre à la résolution des minuteurs système disponibles en 1995. Utiliser des millisecondes évite la perte de précision pour les durées sous la seconde. En travaillant avec des timestamps Unix en secondes générés par le serveur, multipliez par 1000 avant de les passer à new Date().
Comment convertir un timestamp Unix en date lisible en JavaScript ?
Pour un timestamp en secondes : new Date(1700000000 * 1000).toISOString(). Pour un timestamp en millisecondes : new Date(1700000000000).toISOString(). Les deux produisent des chaînes ISO 8601 comme '2023-11-15T06:13:20.000Z'. Utilisez toLocaleString() avec une option timeZone pour un affichage localisé.
Les timestamps Unix tiennent-ils compte du fuseau horaire ?
Non. Un timestamp Unix représente toujours un seul moment en UTC. L'information de fuseau n'est appliquée qu'au formatage du timestamp pour l'affichage. Deux appareils dans des fuseaux différents produiront le même timestamp Unix pour le même instant.
Qu'est-ce que le problème de l'an 2038 ?
Les systèmes qui stockent les timestamps Unix en entiers signés 32 bits ne peuvent représenter que des valeurs jusqu'à 2 147 483 647, ce qui correspond au 19 janvier 2038 à 03:14:07 UTC. Après ce moment, l'entier déborde vers un grand nombre négatif. Les systèmes modernes 64 bits ne sont pas affectés, mais les systèmes embarqués et les bases de données héritées peuvent rester à risque.
Qu'est-ce qu'un timestamp Unix négatif ?
Un timestamp Unix négatif représente un moment avant l'epoch Unix. Par exemple, -86400 est le 31 décembre 1969 à 00:00:00 UTC. La plupart des API de date modernes gèrent correctement les timestamps négatifs, mais certains systèmes et bases de données plus anciens ne les prennent pas en charge.
Comment obtenir un timestamp Unix en Python ?
Utilisez import time; int(time.time()) pour les secondes. Pour un datetime UTC explicite : import datetime; int(datetime.datetime.now(datetime.timezone.utc).timestamp()). Pour les millisecondes : int(time.time() * 1000).
Quelle est la précision d'un timestamp Unix ?
Un timestamp Unix standard a une précision d'une seconde. Pour une précision sous la seconde, les timestamps en millisecondes (13 chiffres) sont courants dans les API web et en JavaScript. Certains systèmes utilisent des microsecondes (16 chiffres) ou des nanosecondes. L'unité appropriée dépend de la précision dont votre application a réellement besoin.