Guide complet des timestamps Unix : conversion entre formats
Le timestamp Unix est l'un des concepts les plus fondamentaux en informatique, mais de nombreux développeurs et professionnels des données restent confus à son sujet. Que vous déboguiez une réponse d'API, analysiez des fichiers de logs ou construisiez un système de planification, comprendre le fonctionnement des timestamps Unix et comment convertir entre formats est une compétence essentielle.
Qu'est-ce qu'un timestamp Unix ?
Le timestamp Unix, également appelé epoch time ou temps POSIX, est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC (hors secondes intercalaires). Ce point de référence est appelé l'époque Unix. Les timestamps sont stockés sous forme d'un seul entier, ce qui facilite la comparaison, le tri et le calcul des différences de temps.
Par exemple, le timestamp Unix 1700000000 correspond au 14 novembre 2023 à 22:13:20 UTC. La simplicité de représenter le temps comme un seul nombre fait du timestamp Unix le standard de représentation du temps dans les systèmes d'exploitation, les bases de données et les langages de programmation.
Pourquoi utiliser les timestamps Unix
- Universel et sans ambiguïté : les timestamps utilisent toujours l'UTC, éliminant la confusion causée par les fuseaux horaires et les changements d'heure d'été.
- Facile à comparer : comparer deux timestamps est une simple comparaison d'entiers, ce qui rend trivial de déterminer quel événement s'est produit en premier ou de calculer la différence de temps.
- Stockage compact : un seul entier 32 ou 64 bits occupe beaucoup moins d'espace qu'une chaîne de date formatée.
- Indépendant du langage : chaque langage de programmation et système de base de données peut traiter nativement les timestamps Unix.
- Opérations arithmétiques : ajouter ou soustraire du temps est aussi simple que d'ajouter ou de soustraire des secondes à une valeur entière.
Formats de timestamp courants
Différents systèmes utilisent différents formats de timestamp. Comprendre ces différences vous aide à convertir avec précision entre eux.
| Format | Exemple | Utilisé par |
|---|---|---|
| Unix secondes | 1700000000 | Linux, API, bases de données |
| Unix millisecondes | 1700000000000 | JavaScript, Java |
| Unix microsecondes | 1700000000000000 | Python, Go |
| ISO 8601 | 2023-11-14T22:13:20Z | API REST, JSON |
| RFC 2822 | Tue, 14 Nov 2023 22:13:20 +0000 | En-têtes d'e-mail, HTTP |
Convertir un timestamp Unix en date lisible
En JavaScript
JavaScript représente les timestamps en millisecondes. Pour convertir un timestamp Unix en secondes en objet JavaScript Date, multipliez d'abord par 1000. Ensuite, utilisez des méthodes comme toLocaleString() ou toISOString() pour formater la sortie.
En Python
Le module datetime de Python fournit la méthode fromtimestamp() pour convertir un timestamp Unix en objet datetime. Python prend également en charge les timestamps avec une précision en microsecondes via la méthode datetime.fromtimestamp(ts, tz=timezone.utc).
En ligne de commande
Sur Linux et macOS, la commande date peut convertir les timestamps. Sur Linux, utilisez date -d @1700000000 ou sur macOS, utilisez date -r 1700000000 pour obtenir une date lisible à partir d'un timestamp Unix.
Avec un outil en ligne
La méthode la plus rapide pour convertir un timestamp est d'utiliser un convertisseur en ligne. Collez votre timestamp et l'outil affiche instantanément la date et l'heure correspondantes (dans plusieurs formats). Essayez notre convertisseur de timestamp gratuit pour des conversions rapides.
Convertir une date en timestamp Unix
La conversion inverse — d'une date lisible en timestamp Unix — est tout aussi importante. Elle est souvent nécessaire lors de l'envoi de dates à une API, du stockage d'une date choisie par l'utilisateur ou de la planification d'événements futurs.
En JavaScript, créez un objet Date et appelez getTime() pour obtenir le timestamp en millisecondes, puis divisez par 1000 pour obtenir les secondes. En Python, utilisez datetime.timestamp() pour obtenir directement le timestamp Unix. La plupart des langages de programmation offrent des méthodes intégrées similaires.
Le problème de l'année 2038
Les systèmes utilisant des entiers signés de 32 bits pour stocker les timestamps Unix déborderont le 19 janvier 2038 à 03:14:07 UTC. À ce moment, le timestamp atteindra 2147483647, la valeur maximale d'un entier signé 32 bits, puis passera en négatif, provoquant l'affichage de dates en 1901.
Ce problème, appelé bug de l'an 2038 ou Y2K38, affecte les anciens systèmes et les appareils embarqués. La solution est d'utiliser des entiers de 64 bits pour stocker les timestamps, ce qui étend la plage représentable à environ 292 milliards d'années. La plupart des systèmes d'exploitation, bases de données et langages de programmation modernes sont passés aux timestamps 64 bits.
Gestion des fuseaux horaires
Les timestamps Unix utilisent toujours l'UTC, éliminant l'ambiguïté des fuseaux horaires. Cependant, l'affichage des timestamps aux utilisateurs nécessite une conversion vers leur fuseau horaire local. Voici les points clés à prendre en compte :
- Stockez les timestamps en UTC dans la base de données et convertissez en heure locale uniquement pour l'affichage à l'utilisateur
- Utilisez les identifiants de fuseau horaire de la base IANA (comme « America/New_York ») plutôt que des abréviations (comme « EST ») pour gérer correctement l'heure d'été
- Incluez toujours les informations de fuseau horaire dans les réponses d'API, de préférence au format ISO 8601 avec décalage UTC
- Sachez que certaines régions n'appliquent pas l'heure d'été et que les règles changent fréquemment
Pièges courants
- Confondre les secondes et les millisecondes lors du passage entre JavaScript et d'autres langages
- Oublier de prendre en compte le fuseau horaire lors de l'affichage des timestamps
- Utiliser des entiers 32 bits pour stocker les timestamps sur des systèmes proches de la limite de 2038
- Ne pas gérer les timestamps négatifs pour les dates antérieures au 1er janvier 1970
- Supposer que tous les jours ont 86400 secondes lors d'opérations arithmétiques sur les dates aux limites de l'heure d'été
Besoin de convertir entre timestamps Unix et dates lisibles ? Essayez notre convertisseur de timestamp gratuit.
Essayez le convertisseur de timestampQuestions fréquentes
Qu'est-ce que l'époque Unix ?
L'époque Unix est le 1er janvier 1970 à 00:00:00 UTC. Elle sert de point de référence pour tous les calculs de timestamps Unix. Le timestamp représente le nombre de secondes écoulées depuis cet instant.
Les timestamps Unix vont-ils s'épuiser ?
Les timestamps Unix stockés sur des entiers signés 32 bits déborderont le 19 janvier 2038, ce qui est appelé le bug de l'an 2038. Les systèmes utilisant des entiers 64 bits ne seront pas confrontés à ce problème pendant environ 292 milliards d'années. La plupart des systèmes modernes sont passés aux timestamps 64 bits.
Les timestamps Unix sont-ils affectés par les fuseaux horaires ?
Non, les timestamps Unix utilisent toujours l'UTC et ne sont pas affectés par les fuseaux horaires. Le même timestamp représente le même instant dans le monde entier. La conversion de fuseau horaire se produit uniquement lors de l'affichage du timestamp sous forme de date lisible.
Quelle est la différence entre les timestamps en secondes et en millisecondes ?
Le timestamp Unix standard mesure le temps écoulé depuis l'époque en secondes, tandis que JavaScript et certaines API utilisent des millisecondes. Un timestamp en millisecondes est 1000 fois plus grand qu'un timestamp en secondes. Par exemple, 1700000000 secondes équivaut à 1700000000000 millisecondes.
Les secondes intercalaires affectent-elles les timestamps Unix ?
Techniquement, les timestamps Unix ignorent les secondes intercalaires. Chaque jour est considéré comme ayant exactement 86400 secondes. Cela signifie que lorsqu'une seconde intercalaire est insérée, le temps Unix peut légèrement dériver par rapport à l'UTC, mais en pratique cela pose rarement problème.