FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

L'heure Unix expliquée : définition, époque et problème Y2038

Pourquoi Unix adopte-t-il une conception spécifique du temps ? Quelle est l'époque Unix et en quoi consiste le problème Y2038 ?

L'heure Unix est un standard pour représenter une date et une heure précises, utilisé par Linux, macOS et de nombreux systèmes interopérables. Elle est omniprésente, souvent sans que vous en ayez conscience. Une fois maîtrisée, vous la repérerez partout. Divers outils facilitent son utilisation.

Quel est l'intérêt du temps Unix ?

L'heure Unix mesure le nombre total de secondes écoulées depuis un instant fixe. Ce format d'horodatage diffère des représentations lisibles par l'humain, privilégiant l'efficacité. Stocker un seul entier est bien plus compact que des champs séparés pour année, mois, jour, etc.

En termes modernes, l'économie d'espace est moindre, mais Unix est né fin des années 1960, époque de stockage limité. Les horodatages s'accumulent : chaque fichier en porte trois (création, modification, accès).

Illisible mentalement, ce format offre des avantages : comparaison instantanée de deux timestamps (plus grand = plus récent) et calcul rapide de différences, idéal pour des dates proches.

L heure Unix expliquée : définition, époque et problème Y2038

À propos de l'époque Unix

Le point de référence est le 1er janvier 1970 à 00:00:00 UTC, dit « époque Unix ». Choix pratique : date ronde la plus proche lors de sa création.

Cette date apparaît souvent en cas d'erreur (timestamp nul = époque), expliquant des bugs datés de 1970.

Le format des données de l'heure Unix

Initialement un entier signé 32 bits, toujours courant malgré les systèmes modernes. Il couvre 2³¹ secondes (±68 ans autour de l'époque : 1902-2038).

Cette plage suffit pour les usages comme les métadonnées de fichiers, focalisés sur le présent ou un avenir proche.

Cependant, elle pose un défi majeur...

Le problème de l'année 2038

Comme le bug Y2K (années à deux chiffres interprétées comme 1900 en 2000), l'heure Unix 32 bits subit le « problème Y2038 ». Le 19 janvier 2038 à 03:14:07 UTC, le compteur signé 32 bits sature (2³¹-1), provoquant des débordements.

Préparations en cours : migrations vers 64 bits rendront la plupart des systèmes compatibles d'ici là.

Outils utiles pour les horodatages

Epoch Converter est le plus complet : affichage en temps réel, conversions bidirectionnelles et fonctions avancées.

Dan's Tools offre un convertisseur simple et épuré.

Time.is minimaliste, avec heure Unix actuelle en titre.

L heure Unix expliquée : définition, époque et problème Y2038

Utiliser l'heure Unix en ligne de commande

Sur Linux/macOS, date gère les timestamps. Sans argument : format lisible.

$ date
Mer 10 fév 2021 12:28:30 GMT

Pour le timestamp actuel : +%s.

$ date +%s
1612960114

Conversion date → timestamp (Linux) : -d.

$ date -d "2 janvier 1970" +%s
82800

macOS : syntaxe différente.

$ date -j -f "%d %B %Y %T" "02 janvier 1970 00:00:00" +%s
82800

Timestamp → date : -r (Linux).

$ date -r 1600000000
dim. 13 sept. 2020 13:26:40 BST

Avec ls (Linux) : --time-style=+%s.

$ ls -l --time-style=+%s index.tmp.html
-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

L'heure Unix en programmation

PHP : time() pour actuel ; date() avec timestamp.

$ php -r 'echo date("Y-m-d", time());'
2021-02-11

JavaScript : Date.now() / 1000.

> Math.floor(Date.now() / 1000)
1613083012

Maîtriser l'heure Unix

Concept simple mais ubiquitaire, utile pour décalages ou debugging. Pour approfondir Linux, voir notre guide des commandes essentielles.

[]