4 Punkte von GN⁺ 2023-11-12 | 1 Kommentare | Auf WhatsApp teilen
  • Dass der Unix-Timestamp in den Bereich von 1,7 Milliarden eintritt, bedeutet, dass seit dem 1. Januar 1970 UTC entsprechend viele Sekunden vergangen sind; als Beispielwert wird 1782553539 angezeigt
  • Das Konvertierungstool wandelt Timestamps in GMT, die Zeitzone des Nutzers und relative Zeit um und unterstützt Einheiten in Sekunden, Millisekunden, Mikrosekunden und Nanosekunden
  • Dieselbe Uhrzeit wird zugleich in ISO 8601 und mehreren RFC-Formaten angezeigt, sodass Unterschiede bei Datumsdarstellungen zwischen Systemen leichter nachvollziehbar sind
  • Da ein Unix-Timestamp unabhängig vom Standort denselben Zeitpunkt bezeichnet, ist er in verteilten Anwendungen nützlich für die Nachverfolgung und Sortierung von Datumsinformationen
  • Am 19. Januar 2038 wird ein 32-Bit-Overflow zum Problem; Anwendungen müssen daher neue Timestamp-Konventionen übernehmen oder auf 64-Bit-Systeme migrieren

Grundlagen und Umrechnung von Unix-Timestamps

  • Ein Unix-Timestamp behandelt Zeit als aufsummierten Wert in Sekunden
    • Bezugspunkt ist die Unix Epoch am 1. Januar 1970 UTC
    • Die Anzahl der Sekunden, die zwischen einem bestimmten Datum und der Unix Epoch vergangen ist, wird zum Timestamp-Wert
    • Dieser Wert bezeichnet denselben Zeitpunkt, egal wo sich der Nutzer auf der Erde befindet
  • Das Konvertierungstool der Seite unterstützt sowohl die Eingabe von Timestamps als auch von Datum/Uhrzeit
    • Timestamps können in Sekunden, Millisekunden, Mikrosekunden und Nanosekunden eingegeben werden
    • Datum/Uhrzeit werden über Jahr, Monat, Tag, Stunde im 24-Stunden-Format, Minute und Sekunde eingegeben und in einen Unix-Timestamp umgewandelt
    • Das Ergebnis lässt sich im Format GMT, in der Zeitzone des Nutzers und als relative Zeit anzeigen

Zusätzlich angezeigte Standardzeitformate

  • Das aktuelle Epoch-Beispiel wird zusammen mit mehreren Standardzeitformaten bereitgestellt

Umrechnung von Zeiteinheiten und das Jahr-2038-Problem

  • Die Seite zeigt die Umrechnung menschenlesbarer Zeiteinheiten in die Sekundenanzahl eines Unix-Timestamps
    • 1 Stunde: 3600 Sekunden
    • 1 Tag: 86400 Sekunden
    • 1 Woche: 604800 Sekunden
    • 1 Monat, basierend auf 30,44 Tagen: 2629743 Sekunden
    • 1 Jahr, basierend auf 365,24 Tagen: 31556926 Sekunden
  • Am 19. Januar 2038 funktionieren Unix-Timestamps wegen eines 32-Bit-Overflows nicht mehr
    • Bis dahin müssen Millionen Anwendungen neue Timestamp-Konventionen übernehmen
    • Alternativ müssen sie auf 64-Bit-Systeme migrieren, um den nutzbaren Zeitraum für Timestamps weiter zu verlängern

1 Kommentare

 
GN⁺ 2023-11-12
Meinungen auf Hacker News
  • 100 Millionen Sekunden vergehen viel zu schnell
    Zum Vergleich: Die Titelseite der New York Times zum Zeitpunkt des Unix timestamp 1600000034 war diese hier:
    https://web.archive.org/web/20200913122714/https://www.nytim...
    Und zu den Zeitpunkten 1500000301, 1400000634 und 1300007806 jeweils diese:
    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...

    • Es sind 3,17 Jahre
  • Auch der Unix timestamp 1 600 000 000 ist noch gar nicht so lange her, das war 2020-09-13 12:26:40 UTC
    Die damalige HN-Diskussion ist hier: https://news.ycombinator.com/item?id=24452885
    Mein Blogbeitrag, den ich zur Feier dieses Ereignisses geschrieben habe, ist hier: https://susam.net/maze/unix-timestamp-1600000000.html
    100 000 000 Sekunden sind ungefähr 3 Jahre und 2 Monate, daher sieht man solche Ereignisse alle paar Jahre einmal
    Das spektakulärste Ereignis ist meiner Meinung nach der Unix timestamp 2 000 000 000, der noch neuneinhalb Jahre entfernt ist: 2033-05-18 03:33:20 UTC. So etwas passiert nur ungefähr alle 33 Jahre und 8 Monate
    In Python sieht 1700000000 so aus:
    $ 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 usw.):
    $ date -ur 1700000000
    Tue 14 Nov 2023 22:13:20 UTC

    • 33 Jahre! Ende der 90er verbrachte ich meine Zeit mit MUDs, und aus irgendeinem Grund gab es viele Save-Dateien, die einen epoch timestamp als Dateinamen verwendeten
      Als ich für einen Teil der Codebase zuständig wurde, hatte ich viel mit diesen Dateien zu tun, und alle hatten Zahlen im Bereich 800 bis 900 Millionen
      Irgendwann konnte ich bei Zahlen in diesem Bereich sofort ungefähr sagen, welches Jahr und welcher Monat das war, mit einer Abweichung von ein paar Wochen
      Seltsame Umgebungen trainieren seltsame Superkräfte
      [0] https://en.wikipedia.org/wiki/Multi-user_dungeon
    • Das noch spektakulärere Ereignis ist, wenn im Januar 2038 die saubere Zahl 2,147,483,648 erreicht wird
    • 2222222222 finde ich noch besonderer: Sat Jun 02 2040 03:57:02 GMT+0000
      Mit etwas Glück kann ich vielleicht auch 3333333333 noch selbst erleben. Das wird ein großartiger Tag
  • Das ist genau der richtige Zeitpunkt, https://datetime.store/ zu öffnen und auf das perfekte Shirt zu lauern

    • Diese Website dürfte am Dienstag ordentlich zusammenbrechen …
      „Boss! Wir werden geDDoSt!“
      „Nein, mein Junge, es ist einfach nur Dienstag“
    • Man könnte doch so etwas wie eine Todesuhr verwenden, die statistisch berechnet, wann man stirbt
      Ich frage mich, ob man auch ein Shirt finden kann, auf dem genau diese Zeit steht
    • Das erinnert mich an die Idee für einen 1-BTC-Kaffeebecher, die ich früher einmal hatte. Das war in der Frühzeit, als Bitcoin erstmals auf 20.000 Dollar stieg
  • Ich bin lange wach geblieben, um zu sehen, wie es von 999,999,999 auf eine Milliarde springt, und dachte: „Diese Woche werde ich mein Leben lang nicht vergessen“
    Ich ahnte nicht, dass 60 Stunden später die ganze Welt diese Woche in Erinnerung behalten würde

    • Der Timestamp 1000000000 (Sat 2001-09-08 18:46:40 PDT) löste damals in dem Bug-Reporting-System Remedy, das wir nutzten, einen Bug aus
      Das System speicherte die Sekunden seit der epoch als String und ging davon aus, dass sie in 9 Stellen passen
      Als 1000000000 erreicht wurde, begann es, die letzte Stelle abzuschneiden, sprang dadurch zurück auf Sat 1973-03-03 01:46:40 PST und lief mit 10 % der tatsächlichen Geschwindigkeit vorwärts. Es wurde ziemlich schnell behoben
    • Ich hatte nicht mehr in Erinnerung, dass es zeitlich so nah beieinanderlag, aber damals las ich Slashdot geradezu besessen, und auch bei 9/11 war es hilfreich
      Das epoch-Ereignis wurde dort sicher ebenfalls behandelt
  • Ich war 2009 bei einem 1234567890-Treffen in der Lobby eines Hotels in Boston

    • Ich hatte Nachtschicht auf dem Trading Floor einer großen Bank
      Der Leiter des Technik-Supports für Derivate wies uns darauf hin, dass dieser Zeitpunkt gleich kommen würde, also öffnete ich eine Shell und ließ den watch-Befehl sowie einen date-Befehl laufen, der epoch-Sekunden ausgab, um den Moment mitzuerleben
      Danach ging ich wieder an die Arbeit
    • An diesen Moment erinnere ich mich! Ich war damals irgendwo in einer Bar, hatte mich aber vorbereitet und meinen Laptop dabei
      Um es nicht zu verpassen, drückte ich ständig Pfeil nach oben und Enter
  • Einer meiner Lieblingsteile in Vinges A Deepness in the Sky ist die Verwendung von Dezimalzeit: Einheiten wie ksec und Msec
    Es gibt eine tolle logarithmische Skala, die die Umrechnung zwischen Erdzeit und Dezimalzeit zeigt

    • Genau! Dank dieses Buchs weiß ich inzwischen, ohne nachzuschlagen, dass eine ksec ungefähr 15 Minuten und eine Msec ungefähr zwei Wochen sind
      Für Überschlagsrechnungen ist das überraschend oft nützlich
      Dass eine Gsec ungefähr ein Drittel eines Jahrhunderts ist, wusste ich schon dank Tom Duffs Beobachtung
      Ich glaube nicht, dass wir demnächst allgemein auf so ein System umsteigen werden. Einheiten, die mit dem Biorhythmus verbunden sind, sind einfach zu praktisch
      Trotzdem überrascht es mich etwas, dass man das bei Diskussionen über Menschen im Weltraum nicht häufiger sieht
      [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
    • Die Software-Archäologen in dem Buch dachten fälschlicherweise, die time_t-Epoche verweise nicht einfach auf 1970, sondern auf die Mondlandung :)
    • Auch die Emergents waren gut. Es war eine Welt, in der libertäre Progressisten eine Utopie geschaffen hatten: 100 % Beschäftigungsquote und Diamantpaläste für alle
  • Bis zum 19. Januar 2038 sind es noch 5.148 Tage
    Falls ich bis dahin lebe, ist der nächste Tag mein 65. Geburtstag. Ich komme also genau rechtzeitig zum digitalen Armageddon an

  • Sinnvoller als den Moment zu feiern, in dem sich die Dezimalschreibweise ändert, wäre es, den Moment zu würdigen, in dem ein Bit an einer relativ hohen Stelle von 0 auf 1 wechselt

  • Mir gefällt die Einheit 100 Millionen Sekunden
    Sie ist länger als ein Jahr und kürzer als zehn Jahre. Die Ära von 1,6e8 war die Pandemie. Was wird 1,7e8 bringen?

  • Schön, dass sich auch andere für so etwas begeistern. Wer UNIX Timeval mag, sollte dieses tf-Tool ausprobieren [1]
    Ein Freund hatte es in C/Lex/Yacc gebaut; ich habe es 15½ Jahre lang täglich benutzt und dann nach Golang + Homebrew portiert, um den Spaß zu teilen
    [1] https://github.com/neomantra/tf
    brew tap neomantra/homebrew-tap
    brew install tf
    Damit lassen sich solche runden Zahlen ausgeben. tf erkennt bei 10 Stellen automatisch, deshalb habe ich auch seq dort beginnen lassen

    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
    Es gibt auch interessante Daten. -g erkennt mehrere Werte in einer Zeile, und -d fügt Datumsangaben hinzu
    echo 1234567890 __ 3141592653 | tf -gd
    2009-02-13 15:31:30 __ 2069-07-20 17:37:33
    Viel Spaß damit. Möge es euch Zeit sparen, Zeit herauszufinden!