Qu'est-ce qu'un timestamp Unix ?
Un timestamp Unix (ou « epoch time ») est le nombre de secondes écoulées depuis le 1ᵉʳ janvier 1970 à minuit UTC. C'est une représentation universelle du temps utilisée dans presque tous les systèmes informatiques : bases de données, API, logs, certificats SSL, JWT.
Exemple : 1731000000 correspond au 7 novembre 2024 à 19:20:00 UTC. La même valeur exprimée en millisecondes donnerait 1731000000000.
Secondes vs millisecondes
| Format | Longueur | Usage |
|---|---|---|
| Secondes | 10 chiffres | Unix classique, PHP time(), Python time(), MySQL UNIX_TIMESTAMP |
| Millisecondes | 13 chiffres | JavaScript Date.now(), Java System.currentTimeMillis() |
Conversion dans les principaux langages
// JavaScript
Math.floor(Date.now() / 1000) // timestamp en s
new Date(timestamp * 1000) // timestamp → Date
// Python
import time
int(time.time())
from datetime import datetime
datetime.fromtimestamp(timestamp)
// PHP
time()
date('Y-m-d H:i:s', $timestamp)
// SQL (PostgreSQL)
EXTRACT(EPOCH FROM NOW())
TO_TIMESTAMP(1731000000)
// Bash
date +%s
date -d @1731000000Bug de l'an 2038
Sur les systèmes 32 bits signés, le timestamp Unix maximum est 2 147 483 647 (2³¹ − 1), atteint le 19 janvier 2038 à 03:14:07 UTC. Au-delà, on entre dans un dépassement (overflow) qui ramène la valeur à 1901. Tous les systèmes 64 bits modernes utilisent un entier suffisamment grand pour repousser ce problème à environ 292 milliards d'années. Linux a basculé en time_t 64 bits dès le noyau 5.6 (2020).
ISO 8601 : le standard international
Format universel et lisible : 2026-05-11T14:30:00Z. Le Z signifie UTC. Avec fuseau : 2026-05-11T16:30:00+02:00. Toujours préférable au format US ambigu (MM/DD/YYYY) ou français (DD/MM/YYYY).
Pièges courants
- Multiplier ou diviser par 1 000 quand on passe entre s et ms (oublier = décalage de 50 ans).
- Confondre l'heure locale et UTC : un timestamp s'affiche différemment selon le fuseau choisi côté client.
- Stocker des dates en string dans une base de données : préférez TIMESTAMP ou DATETIME natifs.
- Ignorer le passage à l'heure d'été : utilisez toujours UTC pour le stockage, le fuseau pour l'affichage uniquement.
Questions fréquentes
Timestamp Unix ?
Secondes depuis 1970-01-01 00:00:00 UTC.
Secondes ou ms ?
Secondes (10 chiffres) classique, ms (13 chiffres) en JS / Java.
Bug 2038 ?
Overflow 32 bits le 19 janvier 2038. Résolu sur systèmes 64 bits.
Format ISO 8601 ?
2026-05-11T14:30:00Z (UTC) ou +02:00 (avec fuseau).
UTC ou local ?
Le timestamp est en UTC. Le fuseau s'applique à l'affichage.
Outils complémentaires
Sources
- POSIX.1-2017 — Open Group Base Specifications (opengroup.org)
- RFC 3339 — Date and Time on the Internet
- ISO 8601 — Date and time format