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.
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.

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.
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...
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à.
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.

Sur Linux/macOS, date gère les timestamps. Sans argument : format lisible.
$ date
Mer 10 fév 2021 12:28:30 GMTPour le timestamp actuel : +%s.
$ date +%s
1612960114Conversion date → timestamp (Linux) : -d.
$ date -d "2 janvier 1970" +%s
82800macOS : syntaxe différente.
$ date -j -f "%d %B %Y %T" "02 janvier 1970 00:00:00" +%s
82800Timestamp → date : -r (Linux).
$ date -r 1600000000
dim. 13 sept. 2020 13:26:40 BSTAvec ls (Linux) : --time-style=+%s.
$ ls -l --time-style=+%s index.tmp.html
-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.htmlPHP : time() pour actuel ; date() avec timestamp.
$ php -r 'echo date("Y-m-d", time());'
2021-02-11JavaScript : Date.now() / 1000.
> Math.floor(Date.now() / 1000)
1613083012Concept simple mais ubiquitaire, utile pour décalages ou debugging. Pour approfondir Linux, voir notre guide des commandes essentielles.
[]