Convertisseur d'horodatage Unix

Convertit entre horodatages Unix (secondes ou millisecondes depuis l'époque) et dates lisibles. Prend en charge plusieurs fuseaux horaires, le remplissage instantané de l'heure actuelle et l'affichage du temps relatif, pour les développeurs.

Notions de base sur l'horodatage Unix

Un horodatage Unix représente une date sous la forme du nombre de secondes écoulées depuis 00:00:00 UTC le 1er janvier 1970 (l'époque Unix). Voici un tableau de valeurs d'horodatage connues et des dates qu'elles représentent.

Horodatage (secondes) Date et heure UTC Remarque
0 1970-01-01T00:00:00Z L'époque Unix (le point de départ de tous les horodatages)
1000000000 2001-09-09T01:46:40Z Le moment où l'horodatage a atteint un milliard de secondes (le « Unix Billennium »)
1234567890 2009-02-13T23:31:30Z Une valeur devenue une curiosité pour contenir les chiffres de 1 à 9 dans l'ordre
2147483647 2038-01-19T03:14:07Z Le bug de l'an 2038 : la valeur maximale d'un entier signé sur 32 bits (le dépassement survient une seconde plus tard)

Astuces d'utilisation

  • Une valeur à 10 chiffres est généralement en secondes, tandis qu'une valeur à 13 chiffres est généralement en millisecondes. Sélectionnez « Détection automatique » pour déduire l'unité à partir du nombre de chiffres.
  • Collez directement un horodatage issu d'un journal serveur ou d'une réponse d'API pour vérifier d'un coup son heure équivalente dans plusieurs fuseaux horaires.
  • Lors de la conversion d'une date en horodatage, veillez à sélectionner explicitement le fuseau horaire auquel appartient la date et l'heure saisies.
  • Le format ISO 8601 (UTC) peut être analysé directement par la plupart des langages de programmation et des bases de données, ce qui le rend utile lors de la recherche dans des journaux ou de la conception d'une API.
  • Cliquez sur « Remplir avec l'heure actuelle » pour renseigner instantanément le champ avec l'heure actuelle obtenue via Date.now() du navigateur.

Questions fréquentes

Un horodatage Unix (temps epoch) exprime une date sous la forme du nombre de secondes écoulées depuis 00:00:00 UTC le 1er janvier 1970 (l'époque Unix). Comme il représente un instant par un seul nombre indépendant du fuseau horaire, il est largement utilisé comme moyen standard d'échanger des dates entre ordinateurs, par exemple dans les journaux serveur, les bases de données et les API.

Le bug de l'an 2038 désigne un problème touchant les systèmes qui stockent les horodatages Unix sous forme d'entiers signés sur 32 bits : une seconde après 03:14:07 UTC le 19 janvier 2038 (valeur maximale, 2 147 483 647), la valeur déborde et la date représentée recule vers 1901 environ. La plupart des systèmes modernes utilisent des entiers 64 bits et ne sont pas concernés, mais les appareils embarqués et les systèmes anciens restent parfois exposés.

Un horodatage représentant l'époque actuelle (années 2020 à 2030) comporte généralement environ 10 chiffres s'il est en secondes, ou environ 13 chiffres s'il est en millisecondes. Le mode « Détection automatique » de cet outil exploite cette différence de nombre de chiffres pour deviner l'unité, mais consulter la spécification des données d'origine ou la documentation de l'API reste le moyen le plus fiable d'en être certain.

Il n'existe pas de raison unique clairement documentée, mais cela est généralement attribué au fait qu'Unix a été développé vers 1969-1970 et que cette année ronde était pratique compte tenu des contraintes de mémoire des ordinateurs de l'époque. Cette date est devenue connue sous le nom d'« époque Unix » et s'est depuis imposée comme une norme de fait suivie par presque tous les langages de programmation et systèmes d'exploitation.

Une valeur négative représente une date antérieure au 1er janvier 1970. Par exemple, l'horodatage -86400 correspond à 00:00:00 UTC le 31 décembre 1969. Les systèmes traitant des dates historiques ou des dates de naissance antérieures à 1970 utilisent parfois des horodatages négatifs.
ツールくん

Anecdote — Pourquoi les ordinateurs comptent-ils le temps en secondes ?

Les humains expriment les dates en combinant année, mois, jour et heure, comme « 12 juillet 2026, 17h08 ». Pour un ordinateur, ce format est pourtant peu pratique : il faut tenir compte de règles complexes comme les années bissextiles, les fuseaux horaires et l'heure d'été, et même calculer l'écart entre deux dates devient une opération fastidieuse. La solution imaginée a été de représenter le temps par un seul nombre : les secondes écoulées depuis un instant de référence. C'est exactement ce que fait un horodatage Unix.

Le principal avantage de représenter le temps par un entier unique est que la comparaison et le calcul des écarts entre dates se ramènent à une simple arithmétique. Déterminer « combien de secondes séparent ces deux événements » revient simplement à soustraire un horodatage d'un autre, sans se soucier des années bissextiles ni des durées variables des mois. Grâce à cette simplicité, ce format a été adopté non seulement par les systèmes de type Unix, mais aussi par Windows, les bases de données et les représentations internes de nombreux langages de programmation, devenant ainsi une norme de fait à l'échelle mondiale.

En revanche, cette conception d'un nombre unique indépendant du fuseau horaire implique que la conversion de fuseau horaire ne devient nécessaire qu'au moment où un humain doit lire la valeur. Un même horodatage peut sembler être en pleine nuit à Tokyo et l'après-midi de la veille à New York, selon le fuseau horaire dans lequel il est affiché. Beaucoup de bugs déroutants du type « l'heure ne correspond pas », rencontrés lors de l'analyse de journaux ou du débogage d'intégrations d'API, proviennent justement de ce type de conversion de fuseau horaire négligée.