4 points par GN⁺ 2023-11-12 | 1 commentaires | Partager sur WhatsApp
  • Le fait que l’horodatage Unix entre dans la tranche des 1,7 milliard signifie que le nombre cumulé de secondes depuis le 1er janvier 1970 UTC a atteint ce niveau, avec une valeur d’exemple affichée comme 1782553539
  • L’outil de conversion transforme l’horodatage en GMT, dans le fuseau horaire de l’utilisateur et en temps relatif, et prend en charge les unités seconde, milliseconde, microseconde et nanoseconde
  • Il affiche aussi le même instant en ISO 8601 et dans plusieurs formats RFC, ce qui facilite la vérification des différences de représentation des dates entre systèmes
  • Comme l’horodatage Unix désigne le même instant quel que soit l’emplacement, il est utile pour le suivi et le tri des informations de date dans les applications distribuées
  • Le débordement 32 bits deviendra un problème le 19 janvier 2038 ; les applications devront donc adopter de nouvelles conventions d’horodatage ou migrer vers des systèmes 64 bits

Référence de l’horodatage Unix et méthode de conversion

  • L’horodatage Unix traite le temps comme une valeur cumulée en secondes
    • Le point de référence est l’Unix Epoch du 1er janvier 1970 UTC
    • Le nombre de secondes écoulées entre une date donnée et l’Unix Epoch devient la valeur de l’horodatage
    • Cette valeur désigne le même instant, où que se trouve l’utilisateur sur Terre
  • L’outil de conversion de la page prend en charge à la fois la saisie d’un horodatage et celle d’une date/heure
    • L’horodatage peut être saisi en secondes, millisecondes, microsecondes ou nanosecondes
    • La date/heure se convertit en horodatage Unix en saisissant l’année, le mois, le jour, l’heure au format 24 h, les minutes et les secondes
    • Le résultat peut être consulté au format GMT, dans le fuseau horaire de l’utilisateur ou en temps relatif

Formats horaires standard affichés en parallèle

  • L’exemple d’epoch actuel est aussi fourni dans plusieurs formats horaires standard

Conversion des unités de temps et problème de 2038

  • La page montre la conversion d’unités de temps lisibles par l’humain en secondes d’horodatage Unix
    • 1 heure : 3600 secondes
    • 1 jour : 86400 secondes
    • 1 semaine : 604800 secondes
    • 1 mois, sur la base de 30,44 jours : 2629743 secondes
    • 1 an, sur la base de 365,24 jours : 31556926 secondes
  • Le 19 janvier 2038, l’horodatage Unix cessera de fonctionner à cause d’un débordement 32 bits
    • D’ici là, des millions d’applications devront adopter de nouvelles conventions d’horodatage
    • Ou migrer vers des systèmes 64 bits afin de prolonger la durée d’utilisation des horodatages

1 commentaires

 
GN⁺ 2023-11-12
Commentaires sur Hacker News
  • 100 millions de secondes passent beaucoup trop vite
    À titre de référence, la une du New York Times au moment du timestamp Unix 1600000034 était ici :
    https://web.archive.org/web/20200913122714/https://www.nytim...
    Et pour 1500000301, 1400000634 et 1300007806, c’était respectivement ici :
    https://web.archive.org/web/20170714024501/http://www.nytime...
    https://web.archive.org/web/20140513170354/http://www.nytime...
    https://web.archive.org/web/20110313091646/http://www.nytime...

    • Ça fait 3,17 ans
  • Le timestamp Unix 1 600 000 000 n’était pas non plus si lointain : c’était le 2020-09-13 12:26:40 UTC
    La discussion HN de l’époque est ici : https://news.ycombinator.com/item?id=24452885
    Le billet de blog que j’avais écrit pour marquer l’événement est ici : https://susam.net/maze/unix-timestamp-1600000000.html
    Comme 100 000 000 secondes font environ 3 ans et 2 mois, on voit ce genre d’événement revenir tous les quelques années
    Je pense que l’événement le plus spectaculaire qui reste est le timestamp Unix 2 000 000 000, encore dans 9 ans et demi : 2033-05-18 03:33:20 UTC. Ce genre de chose n’arrive qu’une fois tous les 33 ans et 8 mois environ
    En Python, 1700000000 donne ceci :
    $ python3 -q

    from datetime import datetime
    datetime.utcfromtimestamp(1_700_000_000)
    datetime.datetime(2023, 11, 14, 22, 13, 20)

    GNU date (Linux) :
    $ date -ud @1700000000
    Tue Nov 14 22:13:20 UTC 2023
    BSD date (macOS, FreeBSD, OpenBSD, etc.) :
    $ date -ur 1700000000
    Tue 14 Nov 2023 22:13:20 UTC

    • 33 ans ! À la fin des années 90, je passais mon temps sur des MUD, et pour une raison ou une autre beaucoup de fichiers de sauvegarde utilisaient l’epoch timestamp comme nom de fichier
      Quand j’ai commencé à prendre en charge une partie de la base de code, j’ai beaucoup manipulé ces fichiers, et ils étaient tous dans les 800 à 900 millions
      À un moment, rien qu’en voyant un nombre dans cette plage, j’arrivais à savoir à peu près de quel mois et de quelle année il s’agissait, à quelques semaines près
      Les environnements bizarres développent des super-pouvoirs bizarres
      [0] https://en.wikipedia.org/wiki/Multi-user_dungeon
    • Un événement encore plus spectaculaire sera atteint en janvier 2038, quand on arrivera au joli nombre 2,147,483,648
    • Je trouve 2222222222 encore plus spécial : Sat Jun 02 2040 03:57:02 GMT+0000
      Avec un peu de chance, on verra peut-être aussi 3333333333 de notre vivant. Ce sera un grand jour
  • C’est le moment idéal pour ouvrir https://datetime.store/ et fixer intensément le t-shirt parfait

    • Ce site va probablement vraiment exploser mardi…
      « Patron ! On est sous DDoS ! »
      « Non, mon garçon, c’est juste mardi »
    • On pourrait utiliser quelque chose comme une horloge de la mort qui calcule statistiquement quand on va mourir
      Je me demande si on pourrait aussi trouver un t-shirt qui affiche cet instant-là
    • Ça me rappelle une idée que j’avais eue autrefois : un mug 1BTC. C’était au tout début quand le Bitcoin est monté pour la première fois à 20 000 dollars
  • J’étais resté éveillé tard pour voir le passage de 999,999,999 à 1 milliard, et je m’étais dit : « Je me souviendrai toute ma vie de cette semaine »
    Je ne savais pas que 60 heures plus tard, le monde entier se souviendrait de cette semaine

    • Le timestamp 1000000000 (Sat 2001-09-08 18:46:40 PDT) avait déclenché un bug dans le système de suivi de bugs Remedy que j’utilisais à l’époque
      Le système stockait les secondes depuis l’epoch sous forme de chaîne, en supposant que ça tiendrait sur 9 chiffres
      Quand c’est devenu 1000000000, il a commencé à tronquer le dernier chiffre, et on est donc revenu à Sat 1973-03-03 01:46:40 PST, puis le temps avançait à 10 % de sa vitesse réelle. Ça a été corrigé assez vite
    • Je ne me souvenais pas que c’était aussi proche, mais à l’époque je lisais Slashdot de manière obsessionnelle, et ça avait aussi été utile le 11 septembre
      Ils ont sûrement couvert cet événement d’epoch aussi
  • Je suis allé en 2009 à un rassemblement 1234567890 dans le hall d’un hôtel à Boston

    • J’étais de garde de nuit sur le floor de trading d’une grande banque
      Le responsable du support technique produits dérivés m’avait dit que ce moment approchait, alors j’ai ouvert un shell et lancé la commande watch avec une commande date qui affichait les secondes epoch pour regarder l’instant arriver
      Puis je suis retourné travailler
    • Je me souviens de ce moment ! J’étais quelque part dans un bar, je crois, mais je m’étais préparé en prenant mon ordinateur portable
      J’appuyais sans arrêt sur la flèche du haut et sur Entrée pour ne pas le rater
  • L’un de mes passages préférés de A Deepness in the Sky de Vinge, c’est l’usage du temps décimal : des unités comme ksec, Msec
    Il y a une superbe échelle logarithmique qui montre la conversion entre le temps terrestre et le temps décimal

    • Oui ! Grâce à ce livre, je sais maintenant sans avoir à vérifier qu’un ksec fait environ 15 minutes et qu’un Msec fait à peu près 2 semaines
      C’est étonnamment utile assez souvent pour faire des calculs à la louche
      Je savais déjà qu’un Gsec représente environ un tiers de siècle, grâce à une remarque de Tom Duff
      Je n’ai pas l’impression qu’on va bientôt basculer vers ce système de manière générale. Les unités liées au rythme biologique sont trop pratiques
      Cela dit, c’est un peu surprenant de ne pas le voir plus souvent quand on parle d’êtres humains dans l’espace
      [0] "How many seconds are there in a year? If I tell you there are 3.155 x 10^7, you won't even try to remember it. On the other hand, who could forget that, to within half a percent, pi seconds is a nanocentury." --Tom Duff
    • Les archéologues du logiciel de ce livre pensaient à tort que l’epoch de time_t renvoyait à l’alunissage, et pas simplement à 1970 :)
    • Les Emergents étaient bien aussi. Des progressistes libertariens avaient créé une utopie, avec 100 % d’emploi et des palais de diamant pour tout le monde
  • Il reste 5 148 jours jusqu’au 19 janvier 2038
    Si je vis jusque-là, le lendemain sera mon 65e anniversaire. J’arriverai pile à temps pour l’Armageddon numérique

  • Plutôt que de célébrer le moment où la notation décimale change, il serait plus logique de fêter le moment où un bit de poids relativement élevé passe de 0 à 1

  • J’aime bien l’unité des 100 millions de secondes
    C’est plus long qu’un an et plus court que dix ans. L’ère du 1.6e8, c’était la pandémie. Qu’est-ce que le 1.7e8 nous apportera ?

  • J’aime bien que d’autres personnes s’enthousiasment aussi pour ce genre de choses. Si vous aimez UNIX Timeval, vous devriez essayer cet outil tf [1]
    Un ami l’a créé en C/Lex/Yacc et je m’en suis servi tous les jours pendant quinze ans et demi ; je l’ai porté en Golang + Homebrew pour partager ce plaisir
    [1] https://github.com/neomantra/tf
    brew tap neomantra/homebrew-tap
    brew install tf
    Il permet d’afficher ce genre de nombres ronds. tf détecte automatiquement à partir de 10 chiffres, donc j’ai aussi fait démarrer seq à ce seuil

    for TV in $(seq -f %.f 1000000000 100000000 2000000000); do echo $TV $TV | tf -d ; done
    2001-09-08 18:46:40 1000000000
    2004-11-09 03:33:20 1100000000
    2008-01-10 13:20:00 1200000000
    2011-03-12 23:06:40 1300000000
    2014-05-13 09:53:20 1400000000
    2017-07-13 19:40:00 1500000000
    2020-09-13 05:26:40 1600000000
    2023-11-14 14:13:20 1700000000
    2027-01-15 00:00:00 1800000000
    2030-03-17 10:46:40 1900000000
    2033-05-17 20:33:20 2000000000
    Il y a aussi des dates amusantes. -g détecte plusieurs valeurs sur une ligne, et -d inclut la date
    echo 1234567890 __ 3141592653 | tf -gd
    2009-02-13 15:31:30 __ 2069-07-20 17:37:33
    Amusez-vous bien avec. J’espère que ça vous fera gagner du temps pour trouver l’heure !