Comment convertir un temps Epoch en date lisible
Convertir un temps Epoch en date, c'est deux étapes : décoder le nombre comme un instant en UTC, puis formater cet instant dans le fuseau voulu. Ce guide explique le modèle mental, comment distinguer secondes et millisecondes, le choix UTC ou local, puis renvoie vers la recette par langage et le convertisseur d'instants.
Epoch vers date, c'est deux étapes
Convertir un timestamp Epoch en date lisible, c'est toujours les deux mêmes étapes : décoder le nombre comme un instant en UTC, puis formater cet instant dans le fuseau où tu veux l'afficher. Le nombre lui-même ne porte aucun fuseau — c'est un instant unique —, donc la même valeur s'affiche comme une heure d'horloge murale différente (parfois un jour calendaire différent) selon le fuseau de formatage. Le tableau ci-dessous montre un timestamp rendu dans plusieurs fuseaux ; le reste de ce guide couvre l'unité, le choix du fuseau et le code.
| Fuseau horaire | Date et heure locales pour 1700000000 |
|---|---|
| UTC (l'instant canonique) | 2023-11-14 22:13:20 · ISO 2023-11-14T22:13:20Z |
| America/New_York | 2023-11-14 17:13:20 (EST) |
| Asia/Tokyo | 2023-11-15 07:13:20 (JST) |
| Australia/Sydney | 2023-11-15 09:13:20 (AEDT) |
Qu'est-ce que le temps Epoch ?
Le temps Epoch (aussi appelé temps Unix ou temps POSIX) est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. C'est le standard universel pour représenter des instants en informatique. Tout langage de programmation et tout système d'exploitation le prend en charge nativement, ce qui en fait le format le plus fiable pour stocker et échanger des timestamps entre systèmes.
Étape 1 — Reconnaître secondes ou millisecondes
Avant de convertir, détermine l'unité. Elle se lit presque toujours au nombre de chiffres, et se tromper d'unité est la cause la plus fréquente d'une date erronée.
- 10 chiffres (p. ex. 1700000000) → secondes depuis l'epoch Unix
- 13 chiffres (p. ex. 1700000000000) → millisecondes depuis l'epoch Unix
- 16 chiffres → microsecondes ; 19 chiffres → nanosecondes
- En cas de doute, vérifie si l'année décodée semble plausible — une date en 1970 ou dans un futur lointain signifie que l'unité a été mal lue
- Le convertisseur ci-dessus détecte l'unité automatiquement
Étape 2 — Décoder en UTC, puis choisir un fuseau
Un timestamp Unix décode vers un instant exact. Afficher cet instant en UTC ou dans un fuseau local est une décision de présentation, pas une propriété du nombre. Choisis UTC pour tout ce qui est destiné aux machines — logs, API, stockage en base, comparaison entre serveurs — et ne convertis vers le fuseau IANA de l'utilisateur qu'au moment d'afficher une date à une personne. Identifie toujours un fuseau par son nom IANA (America/New_York), jamais par un simple décalage, pour que l'heure d'été soit appliquée pour toi.
- Destiné aux machines (logs, API, stockage) → afficher en UTC, ISO 8601 avec un Z
- Destiné aux utilisateurs (échéances, timestamps dans une UI) → convertir vers le fuseau IANA de l'utilisateur
- Ne jamais stocker une heure locale sans son fuseau — stocke l'UTC plus le nom de fuseau IANA
La conversion en code
Tout langage moderne a une fonction intégrée d'une ligne qui fait les deux étapes pour toi. Le schéma est toujours le même : passe la valeur dans l'unité attendue par la fonction, et demande UTC ou un fuseau précis. JavaScript et quelques autres sont ci-dessous ; la recette compagnon couvre intégralement JavaScript, Python, PHP, Java, C#, Go, SQL, Excel et Google Sheets.
- JavaScript : new Date(1700000000 * 1000).toISOString() → "2023-11-14T22:13:20.000Z"
- Python : datetime.fromtimestamp(1700000000, tz=timezone.utc).isoformat()
- Shell : date -u -d @1700000000 (GNU) / date -u -r 1700000000 (BSD, macOS)
- SQL : TO_TIMESTAMP(1700000000) (Postgres), FROM_UNIXTIME(1700000000) (MySQL)
- Règle : passe des secondes là où des secondes sont attendues — seul le Date de JavaScript exige le × 1000
Erreurs courantes en convertissant le temps Epoch
Les erreurs les plus fréquentes lors de la conversion de timestamps Unix :
- Oublier de multiplier les secondes par 1000 en JavaScript — new Date(1700000000) donne l'année 1970, pas 2023
- Utiliser des millisecondes JavaScript directement comme secondes dans un langage côté serveur (une erreur de 1000×)
- Ne pas spécifier de fuseau et se fier au fuseau local du serveur, qui varie selon les environnements
- Stocker les timestamps comme chaînes au lieu d'entiers, ce qui casse les comparaisons et l'arithmétique numériques
- Utiliser datetime.utcfromtimestamp() obsolète en Python — passe plutôt tz=timezone.utc à fromtimestamp()
Articles liés
FAQ
- Comment convertir un temps Epoch en date ?
- Détermine si la valeur est en secondes (10 chiffres) ou en millisecondes (13 chiffres), puis convertis avec l'API de date de ton langage — new Date(seconds * 1000) en JavaScript, datetime.fromtimestamp(seconds, tz=timezone.utc) en Python, ou colle-la dans le convertisseur ci-dessus.
- Pourquoi mon timestamp Epoch se convertit-il en 1970 ?
- Tu as passé une valeur en secondes à une fonction qui attend des millisecondes, le plus souvent le new Date() de JavaScript. Multiplie d'abord par 1000 la valeur en secondes de 10 chiffres.
- Dois-je convertir le temps Epoch en UTC ou en heure locale ?
- Utilise UTC pour les logs, les API et les comparaisons entre serveurs, et convertis vers le fuseau local de l'utilisateur uniquement pour l'affichage. La valeur Epoch elle-même est neutre vis-à-vis du fuseau.
- Comment obtenir une date à partir d'un timestamp Unix en JavaScript ?
- new Date(seconds * 1000) renvoie un objet Date que tu peux formater avec toISOString(), toUTCString() ou Intl.DateTimeFormat. La multiplication est nécessaire car le Date de JavaScript attend des millisecondes, pas des secondes.
- Comment obtenir une date à partir d'un timestamp Unix en Python ?
- Utilise datetime.fromtimestamp(seconds, tz=timezone.utc) pour un datetime UTC conscient du fuseau. Omets l'argument tz pour l'heure locale, ou ajoute .isoformat() pour obtenir une chaîne ISO 8601.
- La même valeur Epoch donne-t-elle une date différente selon le fuseau ?
- L'instant est le même partout, mais la date d'horloge murale que tu affiches dépend du fuseau — et peut même tomber un autre jour calendaire. 1700000000 correspond au 14 nov. à New York, mais au 15 nov. à Tokyo.
- Comment convertir un timestamp en date ?
- Tout langage moderne a une fonction intégrée d'une ligne. Le plus dur est de savoir si ton timestamp est en secondes (10 chiffres) ou en millisecondes (13 chiffres) — l'unité juste, et la conversion elle-même n'échoue jamais.