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

Qu'est-ce que l'heure Unix et quand était l'époque Unix ?

Pourquoi Unix a-t-il sa propre conception du temps ? Quelle est l'époque et quel est le problème Y2038 ?

L'heure Unix est un moyen de représenter une date et une heure spécifiques, utilisé par Linux, macOS et de nombreux autres systèmes interopérables. Il est si répandu que vous l'utilisez probablement sans en être conscient. Cependant, une fois que vous aurez compris le temps Unix, vous le remarquerez dans de nombreux contextes. Plusieurs outils peuvent vous aider à travailler avec l'heure Unix.

Quel est le but du temps Unix ?

L'heure Unix est un nombre total de secondes depuis une heure et une date fixes. C'est un format de date/heure (ou d'horodatage) qui est différent des dates et heures lisibles par l'homme auxquelles nous sommes habitués. C'est uniquement pour des raisons d'efficacité. Il faut beaucoup moins d'espace pour stocker un seul nombre représentant les secondes que pour stocker des valeurs séparées pour l'année, le mois, l'heure, etc.

Bien sûr, en termes modernes, la différence d'espace n'est pas si grande que ça. Mais considérez qu'Unix est né à la fin des années 1960, lorsque le stockage disponible était beaucoup plus petit. Les horodatages sont également beaucoup utilisés, donc leur stockage s'additionne. Par exemple, chaque fichier est associé à trois horodatages.

Le format est pratiquement impossible à traduire dans votre tête, sauf si vous êtes un génie des mathématiques. Mais il a encore quelques avantages par rapport à des alternatives plus lisibles telles que Mer, 21 Oct 2015 07:28:00 GMT . Vous pouvez commander deux horodatages Unix très facilement, en un coup d'œil. Il est également généralement plus rapide de faire la différence entre deux horodatages. Cela est particulièrement vrai pour les dates rapprochées, comme les jours adjacents.

Qu est-ce que l heure Unix et quand était l époque Unix ?

À propos de l'époque

Ainsi, le temps Unix est un nombre total de secondes depuis un point précis dans le temps. Mais quel est ce moment dans le temps ? Il est 00:00:00 UTC le1er janvier 1970 . Ceci est souvent appelé l'époque Unix. Les programmeurs ont choisi cette date pour l'époque par commodité puisqu'il s'agissait de la date ronde la plus proche lorsqu'ils ont inventé l'heure Unix.

Vous avez peut-être vu cette date quand quelque chose a mal tourné. C'est clairement un bug, mais qui a l'air très étrange quand il en résulte une date antérieure à la naissance de beaucoup d'entre nous ! C'est tout à fait compréhensible, cependant, quand on connaît l'heure Unix. Si un système essaie d'afficher un horodatage qui n'a aucune valeur, il se traduira souvent par 0 et donnera la date d'époque exacte.

Le format de données de temps Unix

À proprement parler, il n'y en a pas. Le type de données d'origine était un entier 32 bits, et cela reste souvent le cas, même dans des systèmes beaucoup plus puissants.

Ce type de données permet à la valeur de stocker un total de 2^32 secondes, soit un peu plus de 136 ans. Cette valeur est généralement signée, ce qui signifie qu'elle peut être négative ou positive. Ainsi, cela représente généralement 68 ans de part et d'autre de l'époque, c'est-à-dire 1902-2038.

C'est encore une période limitée, bien sûr. Mais l'utilisation principale du format d'horodatage était pour des concepts tels que la modification de fichiers. Le besoin était bien de représenter le temps proche du présent, plutôt que l'histoire ancienne ou loin dans le futur. Même pour des applications telles que les calendriers, il est rarement nécessaire de représenter des dates plus de quelques décennies dans le futur.

Mais cela ne veut pas dire que ce laps de temps limité est sans problème…

Le problème de l'année 2038

Le bogue Y2K (l'une des pires erreurs de programmation de l'histoire) a affecté les systèmes informatiques qui stockaient les années sous forme de valeurs à deux chiffres. Lorsque l'an 2000 est arrivé, ces systèmes l'ont traité comme s'il s'agissait de 1900. En fait, ce n'était pas aussi catastrophique qu'on le craignait, principalement parce que de nombreuses personnes ont passé beaucoup de temps et d'efforts à l'avance pour s'y préparer.

Si vous avez prêté attention à la section précédente, vous avez peut-être repéré un problème similaire susceptible d'affecter l'heure Unix. Eh bien, le temps Unix a son propre problème de données :le problème Y2k38. (C'est souvent considéré comme un problème, pas comme un bogue; peut-être sommes-nous devenus plus optimistes depuis l'an 2000 !) échouera complètement.

Au moins, ce problème ne nous frappera pas à minuit le soir du Nouvel An. La dernière seconde de l'heure Unix 32 bits tombera le 19 mars. Dans l'éventualité, nous mettrons probablement à niveau la plupart des systèmes d'ici 2038 ou ils seront de toute façon obsolètes d'ici là.

Quelques ressources d'horodatage utiles

Le site Epoch Converter est probablement le convertisseur d'horodatage le plus complet disponible. Il commence par afficher l'heure Unix actuelle - en temps réel - et ajoute presque toutes les fonctionnalités imaginables en plus de cela. Son utilisation principale est la conversion entre les horodatages et les dates lisibles par l'homme, dans les deux sens.

Dan's Tools est une vaste collection d'applications Web utiles, dont l'une est un convertisseur d'horodatage. C'est plus basique, mais sa présentation est très propre et facile à utiliser.

Time.is présente un autre look encore plus minimaliste. Il affiche l'heure dans un certain nombre de formats, y compris l'heure Unix. Il inclut l'heure actuelle dans le titre de sa page, ce qui est utile.

Qu est-ce que l heure Unix et quand était l époque Unix ?

Utilisation de l'heure Unix avec les outils de ligne de commande

Sous Linux et macOS, la date programme est l'utilitaire de base pour traiter la date/heure, y compris les horodatages Unix. Appelé sans aucun argument, il renvoie la date/heure actuelle dans un format lisible par l'homme :

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

Si vous avez besoin de la date/heure actuelle en temps Unix, utilisez le +%s argument :

$ date +%s 
1612960114

Vous pouvez convertir une date lisible par l'homme en un horodatage en utilisant le -d marque si votre version de date le soutient. La plupart des versions de Linux devraient, par défaut :

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

Sur macOS, date est un programme différent, qui nécessite un ensemble différent d'indicateurs :

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

Dans l'autre sens, vous pouvez convertir à partir d'un horodatage Unix en utilisant le -r drapeau :

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

Certains autres programmes utilisent le %s format pour gérer l'heure Unix. Par exemple, si vous souhaitez afficher la date de modification d'un fichier en heure Unix, avec la version Linux de ls , vous pouvez utiliser les éléments suivants :

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

Comment utiliser l'heure Unix dans les langages de programmation

PHP a le time() fonction qui renvoie l'horodatage Unix actuel. Sa date() La fonction prend un horodatage comme second argument :

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

JavaScript aborde les choses d'une manière intéressante. Il a une Date.maintenant() méthode pour obtenir le nombre de millisecondes depuis l'époque Unix. Bien sûr, vous pouvez diviser cela par 1 000 et arrondir le résultat pour obtenir le temps Unix équivalent en secondes :

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

Comprendre l'heure Unix

L'heure Unix est un concept simple qui apparaît dans de nombreux endroits. Une fois que vous l'aurez compris, vous le trouverez peut-être très utile, lors du calcul des décalages horaires, par exemple. Vous pouvez également reconnaître quand cela peut être la cause de certains bugs.

Des concepts tels que l'époque et les horodatages jouent un rôle important dans la prise en main de Linux. Pour en savoir plus sur les incontournables tels que ls , consultez notre guide des commandes Linux de base.


[]