Les timestamps Unix et les fuseaux horaires expliqués

Les ordinateurs mesurent le temps avec un seul nombre : le nombre de secondes écoulées depuis un moment fixe. Les humains lisent l’heure sous forme de date, d’heure et de lieu. Presque tous les bugs de dates naissent dans la traduction entre les deux — une réunion décalée d’une heure après le changement d’heure, une date qui s’affiche en 1970, un export décalé d’un jour. Ce guide explique ce que signifie ce nombre, comment reconnaître ses unités, et pourquoi un même instant a une heure locale différente dans chaque fuseau horaire.

Ce que compte un timestamp Unix

Un timestamp Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC, un moment appelé l’epoch Unix. Le 24 septembre 2026 à midi UTC, il valait 1 790 251 200.

Ce nombre est le même partout sur Terre au même instant. Il ne porte aucun fuseau horaire : le fuseau n’apparaît que lorsque le nombre est converti en date lisible par une personne. C’est pourquoi les timestamps sont le moyen sûr de stocker et d’échanger des instants entre systèmes, et les heures locales ne servent qu’à l’affichage.

Le temps Unix ignore aussi les secondes intercalaires. Chaque jour compte exactement 86 400 secondes, et lorsqu’une seconde intercalaire est ajoutée, l’horloge répète simplement une seconde. Dans presque tous les usages, c’est invisible, et les secondes intercalaires sont en voie de disparition : en 2022, la Conférence générale des poids et mesures a décidé de cesser d’en ajouter d’ici 2035.

Convertisseur de timestamp Unix

Secondes ou millisecondes ?

Un même moment s’écrit souvent dans deux unités. Les outils Unix, les bases de données et la plupart des API utilisent les secondes ; JavaScript, Java et de nombreux systèmes de journalisation utilisent les millisecondes. Pour les dates de ce siècle, la longueur suffit à trancher : 10 chiffres, ce sont des secondes ; 13 chiffres, des millisecondes.

L’erreur est facile à repérer. Une valeur en millisecondes lue comme des secondes tombe des dizaines de milliers d’années dans le futur ; une valeur en secondes lue comme des millisecondes tombe en janvier 1970. Si une date s’affiche en 1970, la première chose à vérifier est l’unité.

Le problème de l’an 2038

De nombreux systèmes anciens stockent le timestamp sous forme d’entier signé 32-bit, dont la plus grande valeur est 2 147 483 647. Cette seconde tombe le 19 janvier 2038 à 03:14:07 UTC. Une seconde plus tard, le nombre déborde et revient au 13 décembre 1901.

Les systèmes d’exploitation, bases de données et langages modernes utilisent un temps 64-bit, qui repousse la limite à des milliards d’années. Le risque se trouve dans les appareils embarqués, les anciens formats de fichiers et les colonnes de base de données déclarées comme entiers 32-bit — c’est pourquoi des dates lointaines dans le futur, comme la fin d’un prêt sur 30 ans, peuvent échouer dès aujourd’hui.

UTC, décalages et fuseaux horaires

L’UTC, le temps universel coordonné, est la référence par rapport à laquelle toutes les autres heures sont mesurées. Il ne change pas avec les saisons. GMT est souvent employé comme son nom courant ; sauf en astronomie, les deux peuvent être considérés comme identiques.

Un décalage UTC indique de combien une horloge locale est en avance ou en retard sur l’UTC : Lisbonne en hiver est à UTC+0, Berlin à UTC+1, São Paulo à UTC−3, Tokyo à UTC+9. Les décalages ne sont pas toujours des heures entières — l’Inde est à UTC+5:30 et le Népal à UTC+5:45 — et ils vont de UTC−12 à UTC+14.

Un fuseau horaire est plus qu’un décalage. C’est l’historique complet des décalages et des règles d’heure d’été d’un lieu, enregistré dans la base de données tz sous des noms comme Europe/Lisbon ou America/Sao_Paulo. Un logiciel qui convertit des dates passées ou futures a besoin du fuseau, et pas seulement du décalage actuel, car les règles changent : le Brésil, par exemple, a supprimé l’heure d’été en 2019.

NotationSignification
2026-09-24T12:00:00ZISO 8601 / RFC 3339 en UTC ; le Z signifie UTC.
2026-09-24T13:00:00+01:00Le même instant, écrit avec un décalage local de UTC+1.
2026-09-24 13:00Une heure locale sans décalage ni fuseau — ambiguë tant qu’on ne sait pas où elle a été écrite.
1790251200Le même instant sous forme de timestamp Unix en secondes.

L’heure d’été

De nombreux pays avancent leurs horloges d’une heure en été et les reculent en hiver, et ils ne le font pas tous le même jour. Dans l’Union européenne, le changement a lieu à 01:00 UTC le dernier dimanche de mars et le dernier dimanche d’octobre, au même instant dans tous les États membres. Les États-Unis changent le deuxième dimanche de mars et le premier dimanche de novembre, à 2:00 heure locale. Dans l’hémisphère sud, les saisons sont inversées, et de nombreux pays — dont le Brésil et la majeure partie de l’Asie et de l’Afrique — ne changent pas du tout.

Ainsi, pendant quelques semaines chaque printemps et chaque automne, l’écart entre deux villes diffère d’une heure de l’écart habituel. C’est à ce moment que les réunions récurrentes se décalent, et c’est pourquoi un outil de planification a besoin des villes, et non de décalages fixes.

Les changements créent aussi des heures locales qui n’existent pas et des heures qui se produisent deux fois. La nuit du passage à l’heure d’été, 01:30 n’existe pas à Lisbonne ; la nuit d’automne, 01:30 se produit deux fois, une fois à l’heure d’été et une fois à l’heure d’hiver. Un timestamp n’a aucun de ces deux problèmes, ce qui est une raison de plus de stocker les instants sous forme de timestamps.

Chevauchement des horaires de réunion

Questions fréquentes

Pourquoi une date s’affiche-t-elle au 1er janvier 1970 ?

Parce que la valeur stockée était 0, vide, ou un timestamp en secondes lu comme des millisecondes. L’epoch, c’est l’apparence que prend une date lorsque le nombre qui se cache derrière vaut zéro ou presque.

Un timestamp Unix est-il en UTC ou en heure locale ?

Ni l’un ni l’autre : c’est un nombre de secondes compté à partir d’un point de départ en UTC, identique en tout lieu sur Terre. Il ne devient une heure UTC ou locale qu’au moment de son affichage.

Pourquoi mon export est-il décalé d’un jour ?

En général, une date sans heure a été traitée comme minuit UTC, puis affichée dans un fuseau en retard sur l’UTC, ce qui la transforme en soirée de la veille. Stockez les dates sans heure comme de simples dates, pas comme des timestamps.

Que signifie le Z à la fin d’une heure ?

Il indique que l’heure est en UTC, comme +00:00. La lettre vient du nom militaire de ce fuseau, « Zulu ».

Guides associés