Comment utiliser le convertisseur de timestamp Unix
- Collez un timestamp Unix. Le convertisseur détecte s’il est exprimé en secondes ou en millisecondes.
- Lisez la date en UTC, dans votre fuseau horaire local et au format ISO 8601.
- Pour faire l’inverse, choisissez une date et une heure, puis copiez le timestamp obtenu.
Les conversions sont calculées dans votre navigateur à partir de l’horloge et des réglages de fuseau horaire de votre appareil ; rien n’est envoyé ni stocké sur un serveur.
Qu’est-ce qu’un timestamp Unix ?
Un timestamp Unix (aussi appelé temps epoch, heure Unix ou temps POSIX) est le nombre de secondes écoulées depuis l’epoch Unix : 1970-01-01T00:00:00Z, soit minuit UTC le 1er janvier 1970. Les dates antérieures à l’epoch sont des nombres négatifs.
Les timestamps sont appréciés parce qu’ils tiennent en un seul entier, indépendant des fuseaux horaires et de l’heure d’été, facile à comparer et à trier, et compact à stocker. La conversion en heure locale relève de l’affichage et se fait au dernier moment.
1700000000 → 2023-11-14T22:13:20Z
0 → 1970-01-01T00:00:00Z
-86400 → 1969-12-31T00:00:00Z
Secondes ou millisecondes
Les outils Unix, PHP, time.time() en Python et la plupart des bases de données utilisent les secondes. Date.now() en JavaScript, System.currentTimeMillis() en Java et de nombreuses API JSON utilisent les millisecondes. Pour les dates actuelles, une valeur en secondes compte 10 chiffres et une valeur en millisecondes 13. Les confondre est de loin le bug de timestamp le plus fréquent :
new Date(1700000000) // Tue Jan 20 1970 (treated as ms!)
new Date(1700000000 * 1000) // Tue Nov 14 2023
Les secondes intercalaires sont ignorées
Le temps Unix suppose que chaque jour compte exactement 86 400 secondes. Lorsqu’une seconde intercalaire est insérée dans l’UTC, le temps Unix ne la compte pas : le timestamp n’est donc pas égal au nombre réel de secondes SI écoulées depuis 1970. Pour presque toutes les applications, c’est sans importance, et cela simplifie les calculs de dates.
Pièges courants
Le problème de l’an 2038
Les systèmes qui stockent les timestamps dans un entier signé de 32 bits ne peuvent compter que jusqu’à 2 147 483 647, soit 2038-01-19T03:14:07Z. Une seconde plus tard, la valeur déborde et repasse à un nombre négatif, qui représente une date en décembre 1901. Les systèmes d’exploitation et les langages modernes utilisent un temps sur 64 bits, mais les appareils embarqués, les anciens formats de fichiers et les colonnes de base de données déclarées en entiers 32 bits restent exposés. Utilisez des entiers 64 bits ou des types date/heure natifs pour tout ce qui peut stocker des dates futures.
L’heure locale qui s’invite
Analyser une chaîne de date sans fuseau horaire, comme 2024-03-10 02:30, utilise le fuseau local de la machine et peut produire des timestamps différents selon les serveurs, voire une heure invalide lors d’un changement d’heure. Indiquez toujours un décalage ou Z.
ISO 8601
Pour les échanges lisibles par un humain, la norme est ISO 8601 (et son profil pour Internet, la RFC 3339) : 2023-11-14T22:13:20Z ou 2023-11-14T23:13:20+01:00. Comme les timestamps, les chaînes ISO 8601 en UTC se trient correctement en tant que simple texte.
Obtenir le timestamp actuel dans le code
| Environnement | Secondes depuis l’epoch |
|---|---|
| Shell (Linux, macOS) | date +%s |
| Python | import time; int(time.time()) |
| JavaScript | Math.floor(Date.now() / 1000) |
| PHP | time() |
| MySQL | SELECT UNIX_TIMESTAMP(); |
| PostgreSQL | SELECT EXTRACT(EPOCH FROM now()); |
Pour reconvertir un timestamp en date en ligne de commande, utilisez date -u -d @1700000000 sous Linux (GNU date) ou date -u -r 1700000000 sous macOS.
exp, iat et nbf sous forme de timestamps Unix en secondes. Le décodeur JWT les convertit pour vous. Pour des identifiants ordonnés dans le temps qui intègrent un timestamp en millisecondes, consultez le générateur d’UUID v7.Questions fréquentes
Un timestamp Unix est-il le même dans tous les fuseaux horaires ?
Oui. Il compte les secondes depuis un instant fixe en UTC : à un moment donné, il est donc identique partout. Seule sa conversion en heure locale diffère.
Comment distinguer les secondes des millisecondes ?
Comptez les chiffres. Les dates actuelles comptent 10 chiffres en secondes et 13 en millisecondes. Une « date » en janvier 1970 signifie généralement qu’une valeur en secondes a été lue comme des millisecondes ; une date située des dizaines de milliers d’années dans le futur signifie l’inverse.
Que se passera-t-il en 2038 ?
Seuls les logiciels qui stockent l’heure dans un entier signé de 32 bits seront touchés. Les timestamps sur 64 bits ne déborderont pas avant des milliards d’années.
Un timestamp Unix peut-il être négatif ?
Oui. Les valeurs négatives représentent des instants antérieurs au 1er janvier 1970, même si certains systèmes et API anciens ne les acceptent pas.
Mis à jour