← Tous les articles

Heure Unix vs heure POSIX vs epoch timestamp : terminologie expliquée

"Epoch timestamp", "heure Unix" et "heure POSIX" sont employés de façon interchangeable, et dans le code de tous les jours ce sont le même nombre — des secondes depuis 1970-01-01 UTC. Mais ils viennent d'endroits différents : l'heure Unix est une convention, l'heure POSIX est une spécification formelle (IEEE Std 1003.1), et "epoch" est un terme générique pour tout instant de référence. Ce guide associe chaque terme à son standard et montre où les différences — secondes intercalaires, plage et autres epochs — comptent vraiment.

Heure Unix, heure POSIX, epoch timestamp : la réponse courte

Dans le code de tous les jours, les trois termes désignent le même nombre : des secondes depuis 1970-01-01 00:00:00 UTC. La distinction tient à leur origine. "Heure Unix" est une convention héritée des débuts d'Unix et de la bibliothèque C. "Heure POSIX" est ce même compte couché dans un standard formel (IEEE Std 1003.1), qui fixe chaque jour à exactement 86 400 secondes. "Epoch timestamp" est le plus générique des trois — une "epoch" est simplement un instant de référence fixe, et bien qu'elle désigne presque toujours l'epoch Unix de 1970, d'autres systèmes (NTP, GPS, Windows) comptent depuis des epochs différentes. Le tableau ci-dessous associe chaque terme à son standard et à sa gestion des secondes intercalaires.

TermeCompteDéfini parSecondes intercalairesNotes
Heure UnixSecondes depuis 1970-01-01 00:00:00 UTCConvention (Unix / bibliothèque C)IgnoréesLe nom courant chez les développeurs
Heure POSIXSecondes depuis l'epoch, par une formule fixeIEEE Std 1003.1 §4.16Ignorées — chaque jour fait exactement 86 400 sLa version formellement spécifiée de l'heure Unix
Epoch timestampUn compte depuis une epoch fixe (souvent l'epoch Unix)Terme générique — l'epoch varieDépend de l'epoch/du système"Epoch" est l'instant de référence, pas toujours 1970
Epoch en millisecondesMillisecondes depuis 1970-01-01 UTCMême epoch, unité plus fineIgnorées13 chiffres aujourd'hui ; par défaut en JavaScript et Java

Qu'est-ce qu'un epoch timestamp ?

Un epoch timestamp est un compte numérique mesuré depuis un instant de référence fixe appelé epoch. Dans l'usage courant des développeurs, epoch timestamp désigne généralement le timestamp Unix : le nombre de secondes depuis le 1er janvier 1970 à 00:00:00 UTC. Une valeur de 0 désigne l'epoch Unix exacte. Les valeurs positives sont après 1970 ; les négatives avant. Le mot qui fait le travail est "epoch" — il nomme l'instant de départ, et tout le reste n'est que comptage à partir de là. Pour la définition simple et le sens du timestamp zéro, voir L'heure epoch expliquée ; cet article se concentre sur la façon dont les trois noms concurrents se rapportent les uns aux autres.

Heure Unix vs heure POSIX : ce que dit le standard

L'heure Unix et l'heure POSIX désignent le même compte, mais seule l'heure POSIX est formellement spécifiée. IEEE Std 1003.1 — le standard POSIX — définit "Seconds Since the Epoch" avec une formule explicite qui convertit une date calendaire UTC en un seul entier. La propriété déterminante de cette formule est qu'elle traite chaque jour comme exactement 86 400 secondes (60 × 60 × 24). C'est une simplification délibérée : elle ignore les secondes intercalaires, échangeant la précision astronomique contre une valeur triviale à calculer, trier et stocker. "Heure Unix" est le nom familier de la même quantité, antérieur au standard ; "heure POSIX" est ce que vous citez quand vous avez besoin de la définition précise.

  • Formule POSIX : une date UTC se projette sur un entier, chaque jour fixé à 86 400 secondes
  • Conséquence : un timestamp Unix/POSIX suit l'UTC mais ne compte jamais les secondes intercalaires insérées
  • time_t est le type C qui le contient — historiquement signé 32 bits, désormais souvent signé 64 bits
  • Même instant → même valeur sur tout système conforme, quel que soit le fuseau ou la locale

L'heure Unix et l'heure POSIX diffèrent-elles vraiment un jour ?

Pour presque tous les logiciels, non — ce sont le même nombre et vous pouvez employer les termes de façon interchangeable. Les différences n'apparaissent qu'à la frontière entre le temps civil et la physique. Comme les deux ignorent les secondes intercalaires, un timestamp Unix/POSIX n'est pas un vrai compte de secondes SI écoulées depuis 1970 : il n'inclut pas les 27 secondes intercalaires insérées dans l'UTC depuis 1972. (Le TAI, une échelle de temps atomique continue, est en avance de 37 secondes exactes sur l'UTC depuis 2017.) Autour d'une seconde intercalaire, une horloge POSIX répète ou saute une seconde pour que le jour reste exactement à 86 400 secondes. Les grandes plateformes évitent cette discontinuité avec le leap smearing — en étalant la seconde supplémentaire sur une journée entière pour qu'aucun timestamp ne soit jamais ambigu. Si vous faites du chronométrage de haute précision, planifiez à travers une seconde intercalaire ou comparez au GPS ou au TAI, c'est là que "Unix" et "POSIX" cessent d'être académiques et que le modèle de secondes intercalaires compte.

Autres epochs que vous rencontrerez

"Epoch timestamp" ne signifie "timestamp Unix" que par convention. Une epoch est simplement l'instant à partir duquel une horloge compte, et plusieurs systèmes très répandus comptent depuis une autre. Quand une valeur ne se décode pas en une date plausible des années 2020 avec l'epoch Unix, une autre epoch en est souvent la raison.

  • Epoch Unix/POSIX — 1970-01-01 UTC ; secondes (ou ms/µs). Le défaut presque partout
  • Epoch NTP — 1900-01-01 UTC ; utilisée par le Network Time Protocol (RFC 5905)
  • Epoch GPS — 1980-01-06 ; l'heure GPS n'a pas de secondes intercalaires, elle a donc dérivé en avance sur l'UTC (18 secondes en 2026)
  • Windows FILETIME — 1601-01-01 UTC, compté en intervalles de 100 nanosecondes
  • JavaScript / Java — l'epoch Unix mais en millisecondes, d'où ces valeurs à 13 chiffres

Pourquoi le timestamp depuis 1970 est devenu le standard

L'epoch Unix était pratique pour les premiers systèmes Unix et est devenue 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 de programmation. Un seul timestamp numérique est plus facile à trier, comparer, transmettre et stocker qu'une chaîne de date localisée. Une fois que la bibliothèque C puis POSIX ont standardisé le compte, 1970 a été figé dans tout l'écosystème — c'est pourquoi une valeur générée sur une plateforme se décode à l'identique sur n'importe quelle autre.

Exemples d'epoch timestamp

Quelques valeurs connues rendent la définition plus facile à mémoriser.

  • 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

Articles associés

FAQ

L'heure epoch est-elle la même que l'heure Unix ?
Dans l'usage courant des développeurs, oui. L'heure epoch désigne généralement l'heure Unix : les secondes écoulées depuis 1970-01-01 00:00:00 UTC.
Quelle est la définition de l'heure Unix ?
L'heure Unix est définie comme le nombre de secondes depuis 1970-01-01 00:00:00 UTC, sans compter les secondes intercalaires.
Qu'est-ce que l'heure POSIX ?
L'heure POSIX est la version formellement spécifiée de l'heure Unix. IEEE Std 1003.1 ("Seconds Since the Epoch") donne une formule exacte qui compte les secondes depuis 1970-01-01 00:00:00 UTC et traite chaque jour comme exactement 86 400 secondes.
Pourquoi l'heure POSIX ignore-t-elle les secondes intercalaires ?
Par conception. La formule POSIX fixe un jour à exactement 86 400 secondes pour que la valeur soit simple à calculer et à stocker. Par conséquent, un timestamp Unix/POSIX suit l'UTC mais ne représente pas les secondes intercalaires qui y sont insérées.
Un timestamp POSIX tient-il compte du fuseau horaire ?
Non. Un timestamp POSIX représente un instant. Les fuseaux horaires ne sont appliqués qu'au moment de formater cet instant en date lisible.
Les epoch timestamps sont-ils les mêmes sous 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 produit le même timestamp Unix partout. Windows utilise en interne sa propre epoch FILETIME (1601), mais les timestamps Unix et POSIX standard utilisent 1970.