Qu'est-ce qu'un timestamp Unix ?

Un timestamp Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC, un instant appelé l'epoch Unix. Par exemple, 1700000000 correspond au 14 novembre 2023 à 22:13:20 UTC, au même instant partout dans le monde. Ce guide explique les secondes et les millisecondes, les fuseaux horaires, la conversion des timestamps dans Excel, JavaScript et SQL, et pourquoi l'année 2038 pose question.

6 min de lecture

Le temps Unix en une phrase

Le temps Unix, aussi appelé temps epoch ou temps POSIX, est un simple nombre entier qui compte les secondes depuis l'epoch, 1970-01-01T00:00:00Z. Il ne contient ni fuseau horaire, ni heure d'été, ni calendrier, et c'est justement pour cela que les bases de données, les fichiers de log, les API, les jetons JWT et les systèmes de fichiers l'utilisent : deux serveurs sur deux continents écrivent le même nombre pour le même instant.

Les dates antérieures à 1970 sont des nombres négatifs : -1 correspond au 31 décembre 1969 à 23:59:59 UTC. La valeur actuelle est un peu inférieure à deux milliards, et elle augmente de 86 400 chaque jour.

Essayez ici : Convertisseur de timestamp Unix

Ouvrir la page complète de l'outil

Secondes, millisecondes, microsecondes

La définition parle de secondes, mais beaucoup de systèmes stockent des unités plus fines tout en parlant de timestamp Unix. En 2026, le moyen le plus rapide de les distinguer est le nombre de chiffres, et c'est aussi ainsi que le convertisseur de cette page détecte l'unité.

Les confondre est le bug le plus courant : lisez une valeur en millisecondes comme des secondes et vous obtenez une date environ 54 000 ans dans le futur ; lisez des secondes comme des millisecondes et vous atterrissez en janvier 1970. Si une date convertie affiche 1970, multipliez par 1 000. Si elle affiche une année très lointaine, divisez par 1 000.

UnitéChiffres aujourd'huiExemple pour le même instantSources typiques
Secondes101700000000Unix et Linux, PHP time(), MySQL UNIX_TIMESTAMP(), exp et iat des JWT
Millisecondes131700000000000JavaScript Date.now(), Java System.currentTimeMillis(), beaucoup d'API JSON
Microsecondes161700000000000000Fonctionnement interne de PostgreSQL, certains outils Python et de bases de données
Nanosecondes191700000000000000000Go time.UnixNano(), traçage haute résolution

Fuseaux horaires et UTC

Un timestamp est toujours fondé sur l'UTC ; les fuseaux horaires n'interviennent qu'au moment de le transformer en date lisible par une personne. La même valeur 1700000000 correspond à 23:13 à Paris, 22:13 à Londres, 17:13 à New York et 01:13 le lendemain à Istanbul. Le nombre ne change pas, seul l'affichage change.

C'est pourquoi la bonne pratique consiste à stocker des timestamps (ou des dates UTC) et à convertir en heure locale tout à la fin, dans l'interface. Stocker des heures locales provoque des heures en double ou manquantes lors des changements d'heure. Le convertisseur affiche chaque timestamp dans votre heure locale, en UTC et dans un fuseau supplémentaire de votre choix sous Afficher aussi en, ainsi qu'au format ISO 8601 (2023-11-14T22:13:20.000Z) pour les API et RFC 2822 pour les en-têtes d'e-mail.

Un détail : le temps Unix ignore les secondes intercalaires. Chaque jour dure exactement 86 400 secondes, si bien qu'un timestamp se convertit en date par simple calcul. Les secondes intercalaires sont absorbées par les horloges, pas comptées dans le nombre.

Convertir dans Excel et Google Sheets

Les tableurs comptent des jours depuis 1900 au lieu de secondes depuis 1970 : on divise donc par le nombre de secondes dans une journée et on ajoute la date de l'epoch. Mettez la cellule résultat au format Date ou Date et heure, sinon vous verrez un nombre décimal comme 45244,93. Dans Excel et Google Sheets en français, les arguments sont séparés par un point-virgule, comme dans les formules ci-dessous ; avec une version anglaise, remplacez-le par une virgule.

Le résultat est en UTC. Pour afficher l'heure locale, ajoutez le décalage en heures divisé par 24, par exemple +1/24 pour Paris en hiver, +3/24 pour Istanbul ou -5/24 pour New York en hiver. Excel ne connaît pas l'heure d'été : un décalage fixe est donc faux la moitié de l'année dans beaucoup de pays ; pour de gros fichiers de log, utilisez plutôt la conversion en lot du convertisseur.

OpérationFormule (timestamp en A2)
Secondes vers date (UTC)=A2/86400+DATE(1970;1;1)
Millisecondes vers date (UTC)=A2/86400000+DATE(1970;1;1)
Date en A2 vers secondes=(A2-DATE(1970;1;1))*86400
Secondes vers heure d'Istanbul (UTC+3)=A2/86400+DATE(1970;1;1)+3/24

Convertir en JavaScript, Python et SQL

Tous les grands langages et bases de données ont des fonctions intégrées. Faites attention à l'unité attendue par chacune : JavaScript travaille en millisecondes, la plupart des autres en secondes.

EnvironnementTimestamp actuelTimestamp vers date
JavaScriptMath.floor(Date.now() / 1000)new Date(ts * 1000).toISOString()
Pythonint(time.time())datetime.fromtimestamp(ts, tz=timezone.utc)
PHPtime()gmdate('Y-m-d H:i:s', $ts)
MySQLUNIX_TIMESTAMP()FROM_UNIXTIME(ts)
PostgreSQLextract(epoch from now())to_timestamp(ts)
SQL ServerDATEDIFF_BIG(SECOND, '1970-01-01', SYSUTCDATETIME())DATEADD(SECOND, ts, '1970-01-01')
SQLitestrftime('%s', 'now')datetime(ts, 'unixepoch')

Le problème de l'an 2038

Beaucoup de systèmes anciens stockent le temps Unix dans un entier signé de 32 bits. Sa valeur maximale, 2 147 483 647, est atteinte le 19 janvier 2038 à 03:14:07 UTC. Une seconde plus tard, le nombre déborde vers une grande valeur négative et la date revient en décembre 1901. Tout ce qui calcule des dates dans le futur, comme des prêts sur 20 ans, des certificats ou des tâches planifiées, peut rencontrer le problème plus tôt.

Les systèmes d'exploitation, langages et bases de données modernes utilisent un temps sur 64 bits, qui tient des milliards d'années. Le risque se trouve dans les vieux systèmes embarqués, les formats de fichiers et les colonnes de bases de données. Dans MySQL, par exemple, le type de colonne TIMESTAMP s'arrête toujours en janvier 2038 : les données appelées à durer sont plus sûres dans des colonnes DATETIME ou BIGINT. Si vous maintenez du code ancien, cherchez les champs de temps sur 32 bits et les colonnes int qui contiennent des timestamps.

Valeurs de référence utiles

  • 0 = 1970-01-01 00:00:00 UTC, l'epoch elle-même.
  • 1000000000 = 2001-09-09 01:46:40 UTC, le premier timestamp à dix chiffres.
  • 1700000000 = 2023-11-14 22:13:20 UTC.
  • 2000000000 = 2033-05-18 03:33:20 UTC.
  • 2147483647 = 2038-01-19 03:14:07 UTC, la limite des 32 bits.
  • 86400 = un jour, 604800 = une semaine, 3600 = une heure.

Étape par étape

  1. Collez le timestampSaisissez une valeur dans Timestamp en date. Les secondes, millisecondes, microsecondes et nanosecondes sont détectées d'après le nombre de chiffres.
  2. Lisez la dateVous la voyez en heure locale, en UTC et au format ISO 8601. Choisissez un fuseau sous Afficher aussi en pour un fuseau horaire de plus.
  3. Convertissez une listeCollez un timestamp par ligne pour obtenir la date ISO à côté de chacun, prête à copier.
  4. Faites l'inverseDans Date en timestamp, choisissez une date, une heure et un fuseau pour obtenir les secondes et les millisecondes.

Questions fréquentes

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

Ni l'un ni l'autre, à proprement parler : il compte les secondes depuis un instant défini en UTC, il est donc le même partout. Seule la date affichée dépend d'un fuseau horaire.

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

Comptez les chiffres. Pour les dates actuelles, il y en a 10 en secondes et 13 en millisecondes. Si une conversion tombe en 1970, c'étaient des millisecondes lues comme des secondes.

Pourquoi ma date convertie affiche-t-elle 1970 ?

La valeur a été lue dans la mauvaise unité, ou elle vaut 0 ou est vide. Multipliez par 1 000 s'il s'agissait de secondes lues comme des millisecondes, et vérifiez les champs vides.

Le temps Unix va-t-il cesser de fonctionner en 2038 ?

Pas sur les systèmes modernes en 64 bits. Seuls les logiciels qui stockent la valeur dans un entier signé de 32 bits débordent le 19 janvier 2038.

Le temps Unix tient-il compte des secondes intercalaires ?

Non. Chaque jour compte exactement 86 400 secondes, ce qui garde les calculs de dates simples.

Le convertisseur est-il gratuit et envoie-t-il mes données quelque part ?

Il est gratuit et fonctionne entièrement dans votre navigateur. Les timestamps de vos logs ne sont ni envoyés ni enregistrés.