Horodatages Unix et conversion dans Google Sheets
7 août 2026
Les API, journaux et nombreuses bases de données stockent le temps comme horodatage Unix : secondes (ou millisecondes) depuis le 1970-01-01 00:00:00 UTC, aussi appelé epoch. Les tableurs préfèrent les dates calendaires. Google Sheets relie les deux avec EPOCHTODATE dans un sens et une simple arithmétique de dates dans l'autre. Ce guide montre les deux conversions, le piège secondes vs millisecondes, et les précautions de fuseau horaire qui font trébucher.
Qu'est-ce qu'un horodatage Unix
| Valeur | Signification (UTC) |
| --- | --- |
| 0 | 1970-01-01 00:00:00 |
| 1599811200 | 2020-09-11 00:00:00 (secondes) |
| 1599811200000 | Même instant (millisecondes) |
Sheets stocke les dates comme numéros de série (jours depuis une époque tableur), d'où la conversion plutôt qu'un simple « formatage » d'un nombre Unix brut en date.
EPOCHTODATE — Unix → date/heure Sheets
EPOCHTODATE convertit une valeur d'epoch en date/heure en UTC.
=EPOCHTODATE(1599811200)
=EPOCHTODATE(1599811200000, "milliseconds")
=EPOCHTODATE(A2, "seconds")
Le second argument optionnel est l'unité : "seconds" (défaut), "milliseconds" ou "microseconds". Si votre colonne source a des nombres à 13 chiffres, vous voulez presque sûrement "milliseconds".
Après conversion, formatez la cellule en Date heure (Format → Nombre) pour voir des valeurs calendaires plutôt que des numéros de série.
Date → Unix (secondes)
Sheets n'a pas de « DATETOEPOCH » intégré, mais le calcul est direct. Un jour compte 86400 secondes :
=(A2 - DATE(1970,1,1)) * 86400
Si A2 est une date pure à minuit interprétée en UTC, vous obtenez la valeur Unix classique en secondes. Pour une date/heure avec une composante horaire :
=(A2 - DATE(1970,1,1)) * 86400
fonctionne encore, car la partie fractionnaire du numéro de série est la fraction de jour — la multiplication par 86400 la transforme en secondes.
Arrondissez ou tronquez pour un jeton entier destiné à une API :
=INT((A2 - DATE(1970,1,1)) * 86400)
Millisecondes plutôt que secondes
=(A2 - DATE(1970,1,1)) * 86400 * 1000
ou, à partir d'une valeur déjà en secondes :
=A2 * 1000
Secondes vs millisecondes (le bug classique)
| Chiffres (typique) | Unité | Que faire |
| --- | --- | --- |
| ~10 | secondes | EPOCHTODATE(A2) |
| ~13 | millisecondes | EPOCHTODATE(A2, "milliseconds") |
| ~16 | microsecondes | EPOCHTODATE(A2, "microseconds") |
Symptômes d'une erreur d'unité :
- Secondes traitées comme millisecondes → date proche de 1970
- Millisecondes traitées comme secondes → année lointaine dans le futur
Heuristique rapide :
=IF(A2>1E12, EPOCHTODATE(A2, "milliseconds"), EPOCHTODATE(A2))
À n'utiliser que si une même colonne mélange les conventions ; préférez une unité fixe par colonne quand vous contrôlez le pipeline.
Fuseaux horaires (bref mais important)
EPOCHTODATEest en UTC. Le numéro de série représente cet instant UTC. L'affichage dépend du format de cellule et de la locale du classeur ; des collaborateurs dans d'autres zones peuvent lire une autre heure locale s'ils traitent mentalement la valeur comme locale.- Les cellules « date seule » sont des minuits, pas des « journées entières dans chaque fuseau ».
(date - DATE(1970,1,1))*86400suppose que le numéro de série vu est l'instant voulu — en pratique souvent minuit sur le calendrier du classeur, qui peut ne pas être « minuit local à Tokyo ». NOW()etTODAY()suivent le fuseau du classeur. N'entremêlez pas un « epoch UTC d'API » etNOW()dans le même calcul de SLA sans expliciter les zones.- Pour le travail calendaire hors epoch, restez sur DATE, TIME et les schémas de Travailler avec les dates dans Google Sheets : le guide complet. Pour du texte qui ressemble seulement à une date, voir Normaliser les dates dans Google Sheets avec DATEVALUE et TEXT.
Schémas pratiques
Colonne d'import API → date lisible
=ARRAYFORMULA(IF(A2:A="",, EPOCHTODATE(A2:A, "milliseconds")))
Âge d'un événement en heures
=(NOW() - EPOCHTODATE(A2, "seconds")) * 24
Interprétez avec la réserve sur les fuseaux ; pour une durée purement UTC entre deux valeurs en secondes d'epoch, soustrayez les nombres et divisez par 3600.
Vérification aller-retour
=EPOCHTODATE((B2 - DATE(1970,1,1))*86400)
Si B2 était une date à minuit UTC, vous devez retomber sur le même jour calendaire.
Erreurs fréquentes
- Oublier l'unité sur des données en millisecondes. Passez toujours
"milliseconds"quand les valeurs sont de l'ordre de1e12. - Formater un nombre Unix brut en Date. Sheets le traite alors comme un numéro de série de jours, pas comme des secondes d'epoch — résultat absurde.
- Supposer que l'heure locale égale l'UTC. L'epoch est défini en UTC ; documentez qui, de chaque côté de la conversion, possède le fuseau.
- Utiliser
TEXTavant de convertir. Convertissez d'abord avecEPOCHTODATE, puis formatez l'affichage avec TEXT si besoin :
=TEXT(EPOCHTODATE(A2), "yyyy-mm-dd hh:mm")
Quelle approche choisir ?
| Objectif | Approche |
| --- | --- |
| Unix → date/heure Sheets | EPOCHTODATE |
| Date Sheets → Unix secondes | (date - DATE(1970,1,1))*86400 |
| Date Sheets → Unix ms | idem × 1000 |
| Colonne d'unités mixtes | heuristique sur la longueur ou nettoyage à l'import |
Pour aller plus loin
Pour l'arithmétique de dates plus large (jours ouvrés, fins de mois, durées), continuez avec Travailler avec les dates dans Google Sheets : le guide complet. Références : EPOCHTODATE, DATE, NOW, TEXT.