Comment convertir des horodatages Unix

· 5 min de lecture

Les horodatages Unix sont la façon dont les ordinateurs stockent et communiquent le temps : un nombre unique représentant les secondes depuis le 1er janvier 1970. Ils apparaissent dans les réponses API, les enregistrements de base de données, les fichiers journaux et les jetons JWT. Lorsque vous avez besoin de savoir quelle date est réellement 1711824000, vous avez besoin d'un convertisseur. Un convertisseur basé sur navigateur gère le calcul instantanément et vous permet d'aller dans les deux sens (horodatage vers date, date vers horodatage).

À quoi ressemble un horodatage Unix

HorodatageTypeLisible par l'humain
0Secondes1er jan 1970 00:00:00 UTC
1000000000Secondes9 sep 2001 01:46:40 UTC
1234567890Secondes13 fév 2009 23:31:30 UTC
1711824000Secondes31 mars 2024 00:00:00 UTC
1711824000000Millisecondes31 mars 2024 00:00:00 UTC
2147483647Secondes19 jan 2038 03:14:07 UTC (maximum 32 bits signé)

La différence entre secondes et millisecondes est de trois zéros supplémentaires. Un nombre à 10 chiffres est en secondes ; 13 chiffres est en millisecondes. À partir de 2024, tous les horodatages Unix basés sur les secondes ont 10 chiffres et le resteront jusqu'en novembre 2286.

Comment convertir les horodatages

  1. Entrez un horodatage ou une date : collez un horodatage Unix pour le convertir en date lisible, ou entrez une date pour obtenir l'horodatage.
  2. Vérifiez le format : le convertisseur détecte automatiquement secondes vs millisecondes selon la longueur du nombre.
  3. Lisez le résultat : voyez la date dans votre fuseau horaire local, UTC et au format ISO 8601.

Une brève histoire du temps Unix

Le temps Unix a été défini pour la première fois dans le Manuel du Programmeur Unix publié chez Bell Labs en novembre 1971. L'époque originale était le 1er janvier 1971, mais elle a été modifiée pour le 1er janvier 1970 peu après et normalisée dans POSIX.1 (1988).

Le choix de 1970 était arbitraire mais pratique : Unix a été développé en 1969-1971, et commencer le compte près de la naissance du système d'exploitation semblait raisonnable. Un entier signé 32 bits comptant les secondes à partir de 1970 donnait une plage de décembre 1901 à janvier 2038, ce que les concepteurs pensaient suffisant.

Ce ne l'est pas. Le « problème de l'an 2038 » (également appelé Y2K38) est le moment où les horodatages Unix signés 32 bits débordent : 2147483647 secondes après l'époque, le prochain tic-tac passe à un nombre négatif que les systèmes interprètent comme décembre 1901. La plupart des systèmes modernes ont migré vers des horodatages entiers 64 bits dans les années 2000 et 2010, mais certains appareils embarqués, anciennes bases de données et formats de fichiers hérités utilisent encore le temps 32 bits et nécessiteront des correctifs avant 2038.

Le temps Unix est désormais le standard de facto pour représenter le temps dans les systèmes informatiques. Les API JSON, les horodatages de lignes de base de données, les expirations JWT, les heures de bloc blockchain, les lectures de capteurs IoT : presque tous utilisent l'époque Unix directement ou indirectement.

Secondes, millisecondes, microsecondes, nanosecondes

Différents systèmes utilisent différentes précisions :

Un horodatage à 19 chiffres peut confondre les convertisseurs s'attendant à des millisecondes ; vérifiez la documentation source lorsque vous voyez des nombres anormaux.

Où vous rencontrez les horodatages

Horodatages dans le code

Conversion rapide dans les langages courants :

JavaScript :

new Date(1711824000 * 1000)            // Depuis secondes (multiplier par 1000)
new Date(1711824000000)                // Depuis millisecondes
Math.floor(Date.now() / 1000)          // Temps actuel en secondes
Date.now()                             // Temps actuel en millisecondes

Python :

from datetime import datetime, timezone
datetime.fromtimestamp(1711824000, tz=timezone.utc)
datetime.now(timezone.utc).timestamp()  # Temps actuel en secondes (float)

Bash :

date -u -d @1711824000                 # GNU date (Linux)
date -u -r 1711824000                  # BSD date (macOS)
date +%s                               # Temps actuel en secondes

SQL (PostgreSQL) :

SELECT TO_TIMESTAMP(1711824000);       -- Convertir epoch en timestamp
SELECT EXTRACT(EPOCH FROM NOW());      -- Epoch actuel

Go :

time.Unix(1711824000, 0)               // Depuis secondes
time.Now().Unix()                      // Temps actuel en secondes

Gestion des fuseaux horaires

C'est là que se cachent la plupart des bugs d'horodatage :

Lors de l'envoi d'horodatages dans les API, utilisez toujours les secondes UTC. Lors de l'affichage aux utilisateurs, convertissez dans leur fuseau horaire local. Le convertisseur gère les deux directions.

Pièges courants

Conseils

Confidentialité

Le convertisseur d'horodatage Unix fonctionne entièrement dans votre navigateur. Les horodatages et dates que vous entrez ne quittent jamais votre appareil. Cela importe parce que les horodatages peuvent etre sensibles : ils peuvent provenir de fichiers journaux révélant la chronologie de l'infrastructure interne, des jetons JWT avec des informations utilisateur/session intégrées, du débogage d'API interne qui ne devrait pas etre partagé avec des tiers. Les convertisseurs d'horodatage en nuage peuvent enregistrer les entrées à des fins « d'amélioration » ; un convertisseur basé sur navigateur n'a aucune exposition.

La conversion basée sur navigateur fonctionne également hors ligne une fois la page chargée, et est assez rapide pour que vous puissiez déposer un horodatage dans le champ et voir la date dans le meme moment.

Questions fréquentes

Qu'est-ce que le temps Unix epoch ?

Le temps Unix epoch (aussi appelé temps POSIX ou horodatage Unix) est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. C'est la façon standard dont les ordinateurs représentent le temps en interne.

Quelle est la différence entre horodatages en secondes et en millisecondes ?

Les horodatages Unix en secondes font 10 chiffres (par ex. 1711824000). Les horodatages en millisecondes font 13 chiffres (par ex. 1711824000000). JavaScript utilise les millisecondes, la plupart des API et bases utilisent les secondes. Le convertisseur détecte automatiquement selon la longueur.

Pourquoi mon heure convertie est-elle décalée de plusieurs heures ?

Les horodatages sont toujours en UTC. Le convertisseur affiche à la fois l'UTC et votre heure locale. Si le résultat ne correspond pas à votre attente, vous comparez probablement une sortie UTC à une heure locale, ou l'inverse.

Que se passe-t-il en 2038 ?

Les systèmes qui stockent les horodatages Unix en entier signé 32 bits déborderont le 19 janvier 2038. La plupart des systèmes modernes utilisent des entiers 64 bits, ce qui étend la plage bien au-delà de toute préoccupation pratique.