Convertisseur de timestamp Unix

Collez un nombre comme 1700000000 pour voir la date qu’il représente, ou choisissez une date pour obtenir son nombre. Inutile de préciser s’il s’agit de secondes, millisecondes, microsecondes ou nanosecondes. La taille du nombre le trahit.

Heure Unix à l’instant, en secondes

…

Les résultats apparaissent pendant que vous tapez. Chaque conversion est faite par votre navigateur : les valeurs que vous saisissez ne nous sont pas envoyées.

Nombre vers date

Date vers nombre

Les champs de date et d’heure sont lus dans le fuseau horaire choisi ci-dessus. Un texte qui se termine par Z ou par un décalage comme +02:00 garde son propre fuseau.

Un seul nombre, le même instant partout

Demandez l’heure à trois personnes pendant un appel vidéo et vous pourriez entendre 9 h 00, 15 h 00 et 23 h 00. Elles ont toutes raison, ce qui n’aide pas du tout un ordinateur qui doit ranger des événements dans l’ordre, faire expirer une session ou signer un document.

Le temps Unix contourne ce problème en comptant les secondes écoulées depuis minuit UTC le 1er janvier 1970, un point de départ appelé epoch. Le compteur a atteint 1 700 000 000 le 14 novembre 2023 à 22:13:20 UTC. Il était 17 h 13 à New York et déjà le lendemain matin à Tokyo et toutes les machines de la Terre affichaient le même nombre.

Un timestamp n’a ni fuseau horaire ni heure d’été. Les fuseaux n’interviennent que lorsque le nombre est transformé en quelque chose qu’une personne lit. C’est pourquoi cette page demande quel fuseau vous voulez et affiche l’UTC à côté.

Secondes, millisecondes et au-delà

Le compte d’origine est en secondes. De nombreux systèmes veulent des pas plus fins et comptent donc de plus petites unités depuis le même epoch et rien dans le nombre n’indique l’unité. Il faut se fier à sa longueur :

UnitéChiffres aujourd’huiSource typique
Secondes10Outils Unix, time() de PHP, dates JWT, la plupart des API
Millisecondes13Date.now() de JavaScript, Java, Kafka
Microsecondes16PostgreSQL, time.time_ns() // 1000 de Python, journaux de traces
Nanosecondes19UnixNano() de Go, InfluxDB, OpenTelemetry

Le convertisseur fait de même : sous 100 milliards il lit des secondes, sous 100 000 milliards des millisecondes, puis des microsecondes, puis des nanosecondes. Il vous dit laquelle il a supposée. L’estimation ne se trompe que pour des dates proches de 1970 écrites dans une unité fine et la liste « Unité » vous permet de l’imposer.

Les unités confondues sont le bogue classique des timestamps. Lisez des secondes comme des millisecondes et vous atterrissez en janvier 1970. Lisez des millisecondes comme des secondes et vous atterrissez des dizaines de milliers d’années dans le futur.

Des valeurs qui méritent un second regard

Zéro, ou un très petit nombre
0 est l’epoch lui-même. C’est ce que contient un champ de date vide et dans les fuseaux à l’ouest de l’UTC il apparaît comme le 31 décembre 1969. Les valeurs à moins d’un mois de l’epoch sont aussi signalées, car ce sont en général des durées ou des champs que personne n’a remplis.
Nombres négatifs
Ils sont valides et comptent à rebours : -86400 est le 31 décembre 1969. Certains anciens logiciels ne peuvent pas les stocker.
2 147 483 648 et plus
Un entier signé de 32 bits s’arrête à 2 147 483 647, soit 03:14:07 UTC le 19 janvier 2038. Une seconde plus tard, un tel compteur repart à décembre 1901. Les systèmes qui gardent encore le temps sur 32 bits ont jusque-là pour passer à 64.
-1
Souvent ce que renvoie une fonction qui n’a pas réussi à lire une date.

D’une date vers un nombre

Faire le chemin inverse demande une information de plus, à savoir le fuseau dans lequel la date a été écrite. « 9 mars 2025 à 14 h 30 » est un instant à Chicago et un autre à Berlin, à six heures d’écart. Les champs de date et d’heure sont lus dans le fuseau que vous choisissez. Un texte comme 2025-03-09T14:30:00-05:00, ou qui se termine par Z, porte son propre décalage et est lu tel qu’il est écrit.

L’heure d’été produit deux cas curieux et l’outil signale les deux :

  • Une heure qui n’existe pas. Quand les horloges passent de 02:00 à 03:00, ce jour-là n’a pas de 02:30. Le convertisseur décale la lecture après le saut, comme la plupart des logiciels et le dit.
  • Une heure qui existe deux fois. Quand les horloges reculent de 02:00 à 01:00, 01:30 se produit deux fois, à une heure d’écart. Le convertisseur renvoie la première et vous donne aussi la seconde.

Le temps Unix ignore les secondes intercalaires : chaque jour compte exactement 86 400 secondes. L’arithmétique reste simple, mais un timestamp n’est pas un vrai compte des secondes écoulées. Il a 27 secondes d’écart depuis 1972.

Les règles de fuseau viennent de la base de données des fuseaux horaires intégrée à votre navigateur. Pour les dates passées, elles reflètent les règles connues aujourd’hui et un pays peut encore changer ses règles pour des dates futures.

Questions fréquentes

Qu’est-ce qu’un timestamp Unix ?

Le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC, sans compter les secondes intercalaires. Il désigne un instant avec un seul entier qui ne dépend d’aucun fuseau horaire : il est donc facile à stocker, comparer et soustraire.

Comment savoir si un timestamp est en secondes ou en millisecondes ?

Comptez les chiffres. Pour les dates actuelles, les secondes ont 10 chiffres et les millisecondes 13. Les microsecondes en ont 16 et les nanosecondes 19. Si votre date tombe en 1970 ou dans une année lointaine, l’unité a été mal lue.

Pourquoi ma date s’affiche-t-elle comme le 1er janvier 1970 ?

La valeur stockée est 0 ou proche de 0. Soit le champ n’a jamais été rempli, soit une conversion échouée a renvoyé 0, soit une valeur en secondes a été lue comme des millisecondes. À l’ouest de l’UTC, le même instant s’affiche comme le 31 décembre 1969.

Qu’est-ce que le problème de l’an 2038 ?

Un logiciel qui garde le temps Unix dans un entier signé de 32 bits peut compter jusqu’à 2 147 483 647, soit 03:14:07 UTC le 19 janvier 2038. La seconde suivante déborde et se lit comme une date de décembre 1901. Le remède est de stocker le temps sur 64 bits.

Un timestamp Unix a-t-il un fuseau horaire ?

Non. Il compte des secondes à partir d’un instant défini en UTC : le même nombre est donc correct partout. Un fuseau horaire n’est appliqué que lorsque le nombre est affiché comme une date de calendrier et une heure d’horloge.

Comment obtenir l’heure Unix actuelle dans le code ?

Dans un shell, date +%s. En JavaScript, Math.floor(Date.now() / 1000). En Python, int(time.time()). En PHP, time(). En SQL, UNIX_TIMESTAMP() sur MySQL et EXTRACT(EPOCH FROM now()) sur PostgreSQL.