Qu'est-ce qu'un timestamp Unix ? Définition et cas d'usage
Un timestamp Unix est un entier représentant le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC. Universel, compact, sans fuseau — voici comment l'utiliser.
Un timestamp Unix (ou Unix time, epoch time, POSIX time) est un nombre entier qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. C'est le format de temps universel des systèmes informatiques.
Pourquoi le 1er janvier 1970 ?
Cette date, appelée epoch, a été choisie par les concepteurs d'Unix (Ken Thompson, Dennis Ritchie) au début des années 1970 comme zéro arbitraire. À 1 seconde près, elle aurait pu être n'importe quoi — son adoption massive en a fait un standard de facto.
Exemples concrets
| Date UTC | Timestamp Unix |
|---|---|
| 1970-01-01 00:00:00 | 0 |
| 2000-01-01 00:00:00 | 946 684 800 |
| 2026-05-19 14:30:00 | 1 779 798 600 |
| 2038-01-19 03:14:07 | 2 147 483 647 (max int32 signé) |
Variantes courantes
- Unix time en secondes : entier 10 chiffres (le standard historique).
- Unix time en millisecondes : entier 13 chiffres (JavaScript
Date.now(), Java). - Unix time en microsecondes : entier 16 chiffres (bases de données haute précision).
- Unix time en nanosecondes : entier 19 chiffres (Go
time.UnixNano()).
Avantages
- Universel : pas de fuseau, pas de format de date, pas d'ambiguïté linguistique.
- Compact : un entier au lieu d'une chaîne de 25 caractères.
- Comparable : comparaison numérique directe pour trier ou filtrer.
- Calculable : différence en secondes = soustraction d'entiers.
Convertir un timestamp Unix vers tout format
Conversion en code
// JavaScript — millisecondes
Date.now(); // 1779798600000
Math.floor(Date.now() / 1000); // 1779798600 (secondes)
new Date(1779798600 * 1000).toISOString();
// → "2026-05-19T14:30:00.000Z"
// Python
import time
time.time() // 1779798600.250
int(time.time()) // 1779798600
// Shell Unix
date +%s // 1779798600
date -d @1779798600 -u // Tue May 19 14:30:00 UTC 2026
Le bug de l'an 2038
Les systèmes 32 bits stockent le timestamp dans un entier signé de 32 bits, dont le maximum est 2 147 483 647. Ce nombre sera atteint le 19 janvier 2038 à 03:14:07 UTC. À la seconde suivante, l'entier déborde et devient négatif → la date apparaît comme 13 décembre 1901.
La parade : utiliser un entier 64 bits (time_t en 64 bits sur tous les OS modernes). Linux a migré en 2020, glibc en 2025.
Limites
- Ne représente pas les fuseaux : un timestamp seul ne dit pas dans quel fuseau l'événement a eu lieu.
- Ne gère pas les secondes intercalaires (leap seconds) : Unix time les ignore (« smear »).
- Peu lisible pour un humain :
1779798600nécessite une conversion.