Qu'est-ce que l'époque Unix et à quand remonte l'époque Unix ?

Qu'est-ce que l'époque Unix et à quand remonte 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ée par Linux, macOS et de nombreux autres systèmes interopérables. C'est tellement répandu que vous l'utilisez probablement sans vous en rendre compte. Une fois que vous aurez compris le temps Unix, vous le remarquerez dans de nombreux contextes. Plusieurs outils peuvent vous aider à travailler avec le temps Unix.





Quel est le but du temps Unix ?

Le temps Unix est un nombre total de secondes depuis une heure et une date fixes. C'est un format date/heure (ou horodatage) qui est différent des dates et heures lisibles par l'homme auxquelles nous sommes habitués. Ceci est purement 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 du tout. 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, de sorte que leur stockage s'additionne. Par exemple, chaque fichier est associé à trois horodatages.

Le format est pratiquement impossible à traduire dans votre tête à moins que vous ne soyez un génie mathématique. Mais il présente encore certains avantages par rapport à des alternatives plus lisibles telles que Mercredi 21 octobre 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 déterminer la différence entre deux horodatages. Cela est particulièrement vrai pour les dates rapprochées, comme les jours adjacents.



À propos de l'époque

Ainsi, le temps Unix est un nombre total de secondes depuis un moment précis. Mais quel est ce moment-là ? Son 00:00:00 UTC au 1er janvier 1970 . C'est ce qu'on appelle souvent l'époque Unix. Les programmeurs ont choisi cette date pour l'époque par commodité car c'était la date la plus proche lorsqu'ils ont inventé l'heure Unix.

Vous avez peut-être vu cette date quand quelque chose ne va pas. 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'époque 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 exacte de l'époque.





Windows Media Player Windows 10 64 bits

Le format de données de temps Unix

A proprement parler, il n'y en a pas. Le type de données d'origine était un entier de 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, il 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 fichier. Le besoin était vraiment 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 de l'an 2000 (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é, de tels systèmes l'ont traité comme s'il s'agissait de 1900. En l'occurrence, ce n'était pas aussi catastrophique qu'on le craignait, principalement parce que de nombreuses personnes ont consacré 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 qui pourrait affecter le temps Unix. Eh bien, le temps Unix a son propre problème de données : le problème Y2k38. (C'est souvent appelé un problème, pas un bogue ; peut-être sommes-nous devenus plus optimistes depuis l'an 2000 !) Lorsque le temps Unix s'achèvera littéralement en 2038, les systèmes traiteront les nouvelles dates comme 1902 ou 1970. va juste échouer complètement.

Au moins, ce problème ne nous frappera pas sur le coup de minuit le soir du Nouvel An. La dernière seconde du temps 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 utiles d'horodatage

Les Convertisseur d'époque site 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 énorme collection d'applications Web utiles, dont l'une est un convertisseur d'horodatage . C'est plus basique, mais a une présentation très propre et est facile à utiliser.

Le temps est 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.

Utiliser Unix Time avec les outils de ligne de commande

Sous Linux et macOS, le Date est l'utilitaire principal pour gérer la date/l'heure, y compris les horodatages Unix. Appelé sans aucun argument, il renvoie la date/l'heure actuelle dans un format lisible par l'homme :

$ date
Wed Feb 10 12:28:30 GMT 2021

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

$ date +%s
1612960114

Vous pouvez convertir une date lisible en un horodatage en utilisant le -ré signaler si votre version de Date le supporte. La plupart des versions de Linux devraient, par défaut :

$ date -d 'Jan 2 1970' +%s
82800

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

$ date -j -f '%b %d %Y %T' 'Jan 02 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
Sun 13 Sep 2020 13:26:40 BST

Certains autres programmes utilisent le %s format pour gérer le temps Unix. Par exemple, si vous voulez afficher la date de modification d'un fichier en temps Unix, avec le 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 le temps Unix dans les langages de programmation

PHP a le temps() fonction qui renvoie l'horodatage Unix actuel. Son Date() La fonction prend un horodatage comme deuxième argument :

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

JavaScript aborde les choses d'une manière intéressante. Il a un 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 donner le temps Unix équivalent en secondes :

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

Comprendre le temps Unix

Le temps Unix est un concept simple qui surgit à de nombreux endroits. Une fois que vous l'aurez compris, vous pourrez le trouver 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 sont une partie importante de la prise en main de Linux. Pour en savoir plus sur les incontournables comme ls , consultez notre guide des commandes Linux de base.

Partager Partager Tweeter E-mail 9 commandes de base pour démarrer avec Linux

Vous voulez vous familiariser avec Linux ? Commencez par ces commandes Linux de base pour apprendre les tâches informatiques standard.

Lire la suite
Rubriques connexes A propos de l'auteur Bobby Jack(58 articles publiés)

Bobby est un passionné de technologie qui a travaillé comme développeur de logiciels pendant près de deux décennies. Il est passionné par les jeux, travaillant comme rédacteur de critiques au Switch Player Magazine, et est immergé dans tous les aspects de la publication en ligne et du développement Web.

Plus de Bobby Jack

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner