Convertisseur timestamp Unix

  

 

Taille

Appuyez sur Échap pour quitter le plein écran

Comment ça marche

  1. Lisez l’heure actuelle

    Le grand nombre est l’heure Unix en ce moment, en secondes. Il avance chaque seconde. Touchez Copier pour la récupérer.

  2. Convertissez un timestamp

    Choisissez « Timestamp en date » et collez un nombre. 10 chiffres sont lus en secondes, 13 en millisecondes. Vous obtenez l’heure locale, l’UTC et l’ISO 8601.

  3. Convertissez une date

    Choisissez « Date en timestamp », réglez la date et l’heure, puis heure locale ou UTC. Le timestamp est prêt à copier.

Une idée pour améliorer cet outil ?

Nous créons des outils aussi simples et intuitifs que possible, avec quelques bonus par-ci par-là. Dites-nous ce qui rendrait celui-ci meilleur.

Qu’est-ce qu’un timestamp Unix ?

Un timestamp Unix, aussi appelé temps Unix, heure POSIX ou epoch, est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. Ce moment s’appelle « l’epoch ». Une seconde plus tard, on était à 1 ; un jour plus tard, à 86 400.

Un même instant a le même timestamp partout sur la Terre. Les fuseaux horaires et le changement d’heure n’interviennent qu’au moment d’afficher une date lisible. C’est pour cela que les serveurs, les bases de données, les journaux et les API l’adorent : un seul entier, sans fuseau, facile à trier et à soustraire.

Secondes ou millisecondes ?

La plupart des systèmes comptent en secondes : un nombre à 10 chiffres aujourd’hui. JavaScript, Java et beaucoup d’API comptent en millisecondes : 13 chiffres. Certaines bases de données et outils de mesure descendent à la microseconde (16 chiffres) ou à la nanoseconde (19 chiffres).

Le convertisseur ci-dessus regarde la longueur du nombre et choisit l’unité pour vous. Si la date tombe en 1970 ou dans un futur lointain, l’unité était sans doute mauvaise : divisez ou multipliez par 1 000.

TimestampDate et heure (UTC)Remarque
01er janv. 1970, 00:00:00L’epoch
1 000 000 0009 sept. 2001, 01:46:40Premier timestamp à 10 chiffres
1 234 567 89013 févr. 2009, 23:31:30Fêté par les développeurs
1 700 000 00014 nov. 2023, 22:13:20Un nombre rond récent
2 000 000 00018 mai 2033, 03:33:20Le prochain grand nombre rond
2 147 483 64719 janv. 2038, 03:14:07Dernière seconde du temps sur 32 bits signés

Le bug de l’an 2038

Beaucoup de systèmes anciens rangent le timestamp dans un entier signé sur 32 bits. La plus grande valeur possible est 2 147 483 647, soit le 19 janvier 2038 à 03:14:07 UTC. Une seconde plus tard, le compteur déborde et passe à −2 147 483 648 : ces systèmes lisent alors le 13 décembre 1901 à 20:45:52.

Les systèmes 64 bits modernes sont tranquilles pour des milliards d’années. Le risque se trouve dans l’embarqué, les vieux formats de fichiers, les bases de données avec des colonnes sur 32 bits et le code qui convertit l’heure en entier 32 bits. Sous Linux, les plateformes 32 bits ont reçu un temps sur 64 bits avec le noyau 5.6 en 2020 et la glibc 2.34 en 2021, mais les logiciels doivent encore être recompilés pour en profiter. Un bon test : enregistrez une date en 2040 et relisez-la.

Le temps Unix et les secondes intercalaires

Le temps Unix fait comme si chaque jour durait exactement 86 400 secondes. L’UTC, lui, a reçu 27 secondes intercalaires depuis 1972, la dernière le 31 décembre 2016. Pendant une seconde intercalaire, le temps Unix répète en général une seconde, ou étire les secondes autour (on parle de « lissage », pratiqué par certains grands hébergeurs). Un timestamp Unix n’est donc pas un compte strict de secondes écoulées : c’est un nombre de jours multiplié par 86 400, plus les secondes du jour en cours.

En pratique, cela compte rarement, et comptera de moins en moins. En novembre 2022, la Conférence générale des poids et mesures a décidé d’élargir d’ici 2035 l’écart permis entre l’UTC et la rotation de la Terre, ce qui revient à abandonner les secondes intercalaires. Le Service international de la rotation terrestre a déjà annoncé qu’il n’y en aurait pas à la fin de décembre 2026.

Fuseaux horaires et changement d’heure

Un timestamp désigne un instant, pas une heure affichée sur une horloge. Au timestamp 1 700 000 000, il était 22:13 à Londres, 23:13 à Paris et 17:13 à New York : trois heures locales, un seul nombre. Pour enregistrer des dates, gardez le timestamp (ou une date ISO 8601 avec « Z ») et ne passez à l’heure locale qu’au moment de l’afficher.

Le changement d’heure le montre bien. La nuit du passage à l’heure d’hiver, l’heure locale de 2h00 à 3h00 se produit deux fois : une heure locale seule est donc ambiguë. Les timestamps, eux, continuent d’avancer seconde après seconde, sans saut. La nuit du passage à l’heure d’été, une heure locale disparaît, mais aucun timestamp ne manque.

Timestamp ou ISO 8601 ?

L’ISO 8601 est le jumeau lisible du timestamp : 2023-11-14T22:13:20Z désigne le même instant que 1 700 000 000. Le timestamp est compact et facile à comparer ; la date ISO se lit facilement dans un journal ou un fichier JSON. Les deux sont sans ambiguïté, à condition que la date ISO porte « Z » ou un décalage comme +01:00.

Obtenir un timestamp Unix dans le code

JavaScript

// Heure Unix actuelle en secondes (Date.now() est en millisecondes)
Math.floor(Date.now() / 1000)

// Timestamp vers date
new Date(1700000000 * 1000).toISOString()   // "2023-11-14T22:13:20.000Z"

// Date vers timestamp
Date.UTC(2026, 0, 1) / 1000                  // 1767225600

Python

import time
from datetime import datetime, timezone

int(time.time())                                       # heure Unix actuelle
datetime.fromtimestamp(1700000000, tz=timezone.utc)    # 2023-11-14 22:13:20+00:00
int(datetime(2026, 1, 1, tzinfo=timezone.utc).timestamp())   # 1767225600

PHP

time();                                   // heure Unix actuelle
gmdate('Y-m-d H:i:s', 1700000000);        // "2023-11-14 22:13:20"
strtotime('2026-01-01 00:00:00 UTC');     // 1767225600

SQL

-- MySQL (FROM_UNIXTIME utilise le fuseau de la session)
SELECT UNIX_TIMESTAMP();
SELECT FROM_UNIXTIME(1700000000);

-- PostgreSQL
SELECT EXTRACT(EPOCH FROM now())::bigint;
SELECT to_timestamp(1700000000);

-- SQLite
SELECT strftime('%s', 'now');
SELECT datetime(1700000000, 'unixepoch');

Shell

date +%s                              # heure Unix actuelle
date -u -d @1700000000                # Linux (date GNU)
date -u -r 1700000000                 # macOS et BSD
date -u -d '2026-01-01 00:00' +%s     # 1767225600 (date GNU)

Les pièges courants

  • L’heure locale par accident. Construire une date à partir de « 2026-01-01 00:00 » sans fuseau utilise l’heure locale de l’ordinateur. Ajoutez « Z » ou « UTC », ou utilisez le choix UTC ci-dessus, quand vous parlez d’UTC.
  • Des secondes lues comme des millisecondes. Un nombre à 10 chiffres lu en millisecondes tombe en janvier 1970. Un nombre à 13 chiffres lu en secondes tombe dans des dizaines de milliers d’années.
  • Les timestamps négatifs. Les dates avant 1970 sont négatives : −86 400 correspond au 31 décembre 1969. La plupart des outils modernes les gèrent, pas tous les anciens.

Pour savoir quelle heure il est ailleurs à un instant donné, utilisez le convertisseur de fuseaux horaires. Pour compter les jours entre deux dates, prenez le calcul de dates, et pour des durées en heures et minutes, le calcul d’heures.

Questions

Quel est le timestamp Unix actuel ?

C’est le grand nombre en haut de cette page, mis à jour chaque seconde sur votre appareil. Il compte les secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC.

Comment convertir un timestamp Unix en date ?

Collez-le dans « Timestamp en date ». En code, multipliez les secondes par 1 000 et passez-les à new Date() en JavaScript, ou utilisez datetime.fromtimestamp() en Python.

Un timestamp Unix est-il en UTC ?

Oui. Le compte part de minuit UTC le 1er janvier 1970, et un même instant a le même timestamp dans tous les fuseaux. Seul son affichage en date dépend du fuseau.

Pourquoi mon timestamp a-t-il 13 chiffres ?

Il est en millisecondes, comme en JavaScript, en Java et dans beaucoup d’API. Divisez par 1 000 pour obtenir des secondes. Le convertisseur le détecte tout seul.

Que se passe-t-il en 2038 ?

Le 19 janvier 2038 à 03:14:07 UTC, le timestamp dépasse 2 147 483 647, le maximum d’un entier signé sur 32 bits. Les systèmes qui rangent encore l’heure ainsi repartiront en 1901. Les systèmes 64 bits ne sont pas concernés.

Le temps Unix compte-t-il les secondes intercalaires ?

Non. Il considère que chaque jour dure exactement 86 400 secondes : les 27 secondes intercalaires ajoutées à l’UTC depuis 1972 ne sont pas comptées en plus.

Comment obtenir le timestamp actuel en JavaScript ?

Date.now() renvoie des millisecondes. Pour des secondes, utilisez Math.floor(Date.now() / 1000).

Comment obtenir l’heure Unix dans un terminal ?

Tapez date +%s sous Linux ou macOS. Pour lire un timestamp : date -u -d @1700000000 sous Linux, ou date -u -r 1700000000 sous macOS.

Un timestamp Unix peut-il être négatif ?

Oui. Les valeurs négatives sont des dates avant 1970 : −86 400 correspond au 31 décembre 1969 à 00:00 UTC.