Développeur6 min de lecture

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 UTCTimestamp Unix
1970-01-01 00:00:000
2000-01-01 00:00:00946 684 800
2026-05-19 14:30:001 779 798 600
2038-01-19 03:14:072 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 : 1779798600 nécessite une conversion.

Pour aller plus loin