Le timestamp epoch expliqué : temps Unix, temps POSIX et secondes depuis 1970

Un timestamp epoch est une façon compacte de représenter un moment comme le temps écoulé depuis un point de départ fixe. Ce guide explique le temps Unix, les timestamps POSIX, la date de l'epoch Unix et pourquoi les secondes depuis 1970 UTC sont devenues la valeur par défaut dans les logiciels.

Qu'est-ce qu'un epoch timestamp ?

Un epoch timestamp est un décompte numérique mesuré depuis un moment de référence fixe appelé epoch. Dans l'usage quotidien des développeurs, epoch timestamp signifie en général timestamp Unix : le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC. Une valeur de 0 correspond à l'epoch Unix exact. Les valeurs positives sont après 1970 ; les négatives, avant.

Temps Unix vs timestamp POSIX

Le temps Unix et le timestamp POSIX sont généralement employés de façon interchangeable dans le code applicatif. Tous deux désignent les secondes écoulées depuis l'epoch Unix, en ignorant les secondes intercalaires pour simplifier le temps civil. Le résultat pratique est un entier stable qui fonctionne entre systèmes d'exploitation, langages, bases de données, API et fichiers de log.

  • Date de l'epoch Unix : 1970-01-01 00:00:00 UTC
  • Timestamp Unix 0 : le début exact de l'epoch Unix
  • Timestamp POSIX : secondes depuis l'epoch Unix sur les systèmes compatibles POSIX
  • Millisecondes epoch : le même epoch, mais compté en millisecondes
  • Microsecondes ou nanosecondes epoch : plus de précision pour les bases et le traçage

Pourquoi le timestamp depuis 1970 est devenu standard

L'epoch Unix était pratique pour les premiers systèmes Unix et est devenu une convention à mesure que les idées d'Unix se sont répandues dans les bibliothèques C, Linux, les bases de données, les serveurs web et les langages. Un seul timestamp numérique est plus simple à trier, comparer, transmettre et stocker qu'une chaîne de date localisée.

Exemples d'epoch timestamp

Quelques valeurs connues facilitent la mémorisation de la définition.

  • 0 = 1970-01-01 00:00:00 UTC
  • 1 = 1970-01-01 00:00:01 UTC
  • 86400 = 1970-01-02 00:00:00 UTC
  • 1700000000 = 2023-11-14 22:13:20 UTC
  • 1767225600 = 2026-01-01 00:00:00 UTC

FAQ sur l'epoch timestamp

Le temps epoch est-il identique au temps Unix ?
Dans l'usage courant des développeurs, oui. Temps epoch signifie en général temps Unix : secondes écoulées depuis 1970-01-01 00:00:00 UTC.
Quelle est la définition du temps Unix ?
Le temps Unix est défini comme les secondes depuis 1970-01-01 00:00:00 UTC, sans compter les secondes intercalaires.
Un timestamp POSIX tient-il compte du fuseau ?
Non. Un timestamp POSIX représente un instant. Les fuseaux ne s'appliquent qu'au moment de formater cet instant en date lisible.
Les epoch timestamps sont-ils identiques sur Windows, Linux et macOS ?
L'epoch Unix (1970-01-01 00:00:00 UTC) est identique sur les plateformes et langages modernes, donc le même instant donne le même timestamp Unix partout. Windows utilise en interne son propre epoch FILETIME (1601), mais les timestamps Unix et POSIX standard utilisent 1970.