Qu'est-ce que l'heure Unix ?
Heure Unix (également connue sous le nom d'heure Epoch, heure POSIX ou timestamp Unix) est un système pour décrire un point dans le temps. C'est le nombre de secondes écoulées depuis l'Époque Unix, qui est définie comme 00:00:00 UTC le jeudi 1er janvier 1970. Elle est largement utilisée dans les systèmes d'exploitation de type Unix et de nombreux autres systèmes informatiques.
L'avantage principal de l'heure Unix est sa simplicité. Elle représente le temps par un entier unique, universellement compris, qui augmente en continu. Cela facilite énormément le stockage, la comparaison et le calcul avec des timestamps sans se soucier des fuseaux horaires, de l'heure d'été ou des différents systèmes calendaires. Par exemple, pour trouver la durée entre deux événements, il suffit de soustraire leurs timestamps Unix.
Bien que ce nombre brut soit parfait pour les ordinateurs, il n'est pas très convivial pour les humains. Pour combler cette lacune, les développeurs et passionnés de technologie utilisent un outil appelé convertisseur d'époque. Vous pouvez l'utiliser pour convertir instantanément n'importe quel timestamp en une date lisible par l'homme, ou faire l'inverse en trouvant le timestamp pour une date spécifique.
Le problème de l'an 2038
Un problème bien connu lié à l'heure Unix est le "Problème de l'an 2038". Il est similaire en nature au problème Y2K. De nombreux premiers systèmes informatiques étaient conçus pour stocker le timestamp Unix en tant que entier signé 32 bits. Un entier signé 32 bits peut représenter des valeurs de -2 147 483 648 à 2 147 483 647.
La valeur maximale, 2 147 483 647, sera atteinte à 03:14:07 UTC le 19 janvier 2038. À la seconde suivante, l'entier déborderait et reviendrait à sa valeur la plus négative, qui sera interprétée par les systèmes comme une date en 1901. Cela pourrait causer des défaillances généralisées dans les logiciels anciens qui dépendent de représentations temporelles sur 32 bits.
La solution consiste à utiliser un entier 64 bits pour stocker le timestamp. Un entier 64 bits a une valeur maximale si grande qu'il ne débordera pas pendant environ 292 milliards d'années, résolvant ainsi le problème pour un avenir proche. La plupart des systèmes d'exploitation modernes et logiciels ont déjà adopté des représentations temporelles sur 64 bits.
Secondes intercalaires et heure Unix
Un détail technique important est que l'heure Unix ne prend pas en compte les secondes intercalaires. Alors que UTC (Temps Universel Coordonné) ajoute occasionnellement une seconde intercalaire pour aligner nos horloges avec la rotation de la Terre, le timestamp Unix l'ignore simplement et continue de compter linéairement.
Cela signifie que l'heure Unix n'est pas une représentation exacte de l'UTC. Elle est plutôt décrite comme un comptage linéaire de secondes. Lorsqu'une seconde intercalaire se produit, l'heure Unix peut répéter une seconde pour rester synchronisée. Cette nuance est cruciale pour les applications scientifiques et de haute précision, mais pour la majorité des usages informatiques, la différence est négligeable.
Usages courants de l'heure Unix
- Horodatages de fichiers : Les systèmes d'exploitation utilisent des timestamps Unix pour suivre la création, la modification ou la dernière ouverture des fichiers.
- Bases de données : C'est une méthode courante et efficace pour stocker les informations de date et d'heure pour des enregistrements (par ex.,
created_at,updated_at). - APIs et développement web : Utilisé pour l'expiration des sessions, le contrôle du cache et la journalisation des requêtes API.
- Programmation : Presque tous les langages de programmation offrent des fonctions pour obtenir le timestamp Unix actuel et le convertir en formats de date lisibles ou inversement.