Was ist die Unix-Zeit und wann war die Unix-Epoche?

Was ist die Unix-Zeit und wann war die Unix-Epoche?

Warum hat Unix ein eigenes Zeitkonzept? Was ist die Epoche und was ist das Y2038-Problem?





Unix-Zeit ist ein Mittel zur Darstellung eines bestimmten Datums und einer bestimmten Uhrzeit, das von Linux, macOS und vielen anderen interoperablen Systemen verwendet wird. Es ist so weit verbreitet, dass Sie es wahrscheinlich verwenden, ohne sich dessen bewusst zu sein. Sobald Sie jedoch die Unix-Zeit verstanden haben, werden Sie sie in vielen Kontexten entdecken. Mehrere Tools können Ihnen helfen, mit der Unix-Zeit zu arbeiten.





Was ist der Zweck von Unix-Zeit?

Die Unix-Zeit ist eine Anzahl der Gesamtsekunden seit einer festen Uhrzeit und einem festen Datum. Es handelt sich um ein Datums-/Uhrzeit- (oder Zeitstempel-) Format, das sich von den menschenlesbaren Daten und Uhrzeiten unterscheidet, an die wir gewöhnt sind. Das ist rein aus Effizienzgründen. Es nimmt viel weniger Platz in Anspruch, eine einzelne Zahl, die Sekunden darstellt, zu speichern, als separate Werte für Jahr, Monat, Stunde usw.





Aus heutiger Sicht ist der Raumunterschied natürlich gar nicht so groß. Aber bedenken Sie, dass Unix in den späten 1960er Jahren entstand, als der verfügbare Speicherplatz viel kleiner war. Zeitstempel werden auch häufig verwendet, sodass sich ihr Speicher summiert. Jeder Datei sind beispielsweise drei Zeitstempel zugeordnet.

Das Format ist so gut wie unmöglich in Ihrem Kopf zu übersetzen, es sei denn, Sie sind ein mathematisches Genie. Aber es hat immer noch einige Vorteile gegenüber besser lesbaren Alternativen wie Mi, 21 Okt 2015 07:28:00 GMT . Auf einen Blick können Sie ganz einfach zwei Unix-Zeitstempel bestellen. Es ist normalerweise auch schneller, den Unterschied zwischen zwei Zeitstempeln zu berechnen. Dies gilt insbesondere für Termine, die eng beieinander liegen, beispielsweise an benachbarten Tagen.



Über die Epoche

Die Unix-Zeit ist also eine Gesamtanzahl von Sekunden seit einem bestimmten Zeitpunkt. Aber was ist das für ein Zeitpunkt? Es ist 00:00:00 UTC An 1. Januar 1970 . Dies wird oft als die Unix-Epoche bezeichnet. Programmierer wählten dieses Datum aus Bequemlichkeitsgründen für die Epoche, da es das nächstgelegene runde Datum war, als sie die Unix-Zeit erfanden.

Vielleicht haben Sie dieses Datum schon gesehen, wenn etwas schief gelaufen ist. Es ist eindeutig ein Fehler, aber einer, der sehr seltsam aussieht, wenn er zu einem Datum führt, das vor der Geburt vieler von uns liegt! Es ist jedoch völlig verständlich, wenn Sie die Unix-Zeit kennen. Wenn ein System versucht, einen Zeitstempel anzuzeigen, der keinen Wert hat, wird er oft in 0 übersetzt und ergibt das genaue Epochesdatum.





spiele nes spiele auf snes classic

Das Unix-Zeitdatenformat

Genau genommen gibt es keinen. Der ursprüngliche Datentyp war ein 32-Bit-Integer, und dies bleibt auch in viel leistungsfähigeren Systemen häufig der Fall.

Mit diesem Datentyp kann der Wert insgesamt 2^32 Sekunden speichern, was etwas mehr als 136 Jahren entspricht. Dieser Wert ist normalerweise vorzeichenbehaftet, was bedeutet, dass er negativ oder positiv sein kann. Es repräsentiert also normalerweise 68 Jahre auf beiden Seiten der Epoche, d. h. 1902-2038.





Dies ist natürlich noch eine begrenzte Zeit. Das Zeitstempelformat wurde jedoch hauptsächlich für Konzepte wie die Dateiänderung verwendet. Die Notwendigkeit bestand sehr darin, die Zeit nahe der Gegenwart darzustellen, und nicht die alte Geschichte oder weit in die Zukunft. Selbst bei Anwendungen wie Kalendern besteht selten die Notwendigkeit, Daten über mehrere Jahrzehnte in der Zukunft darzustellen.

Das heißt aber nicht, dass diese begrenzte Zeitspanne ohne Probleme ist…

Das Jahr 2038-Problem

Der Y2K Bug (einer der schlimmsten Programmierfehler der Geschichte) betraf Computersysteme, die Jahre als zweistellige Werte speicherten. Als das Jahr 2000 kam, wurde es von solchen Systemen wie 1900 behandelt. Die Katastrophe war allerdings nicht so katastrophal wie befürchtet, vor allem, weil viele Leute im Vorfeld viel Zeit und Mühe aufgewendet haben, um sich darauf vorzubereiten.

Wenn Sie im vorherigen Abschnitt aufgepasst haben, haben Sie vielleicht ein ähnliches Problem entdeckt, das sich auf die Unix-Zeit auswirken könnte. Nun, die Unix-Zeit hat ihr eigenes Datenproblem: das Y2k38-Problem. (Es wird oft als Problem bezeichnet, nicht als Fehler; vielleicht sind wir seit dem Jahr 2000 optimistischer geworden!) Wenn die Unix-Zeit im Jahr 2038 buchstäblich abläuft, werden die Systeme neue Daten entweder als 1902 oder 1970 behandeln. werde einfach ganz scheitern.

Zumindest wird uns dieses Problem nicht um Mitternacht an Silvester treffen. Die letzte Sekunde der 32-Bit-Unix-Zeit wird auf den 19. März fallen. Eventuell werden wir die meisten Systeme bis 2038 aufrüsten oder sie sind bis dahin sowieso veraltet.

Einige nützliche Zeitstempel-Ressourcen

Die Epochenkonverter site ist möglicherweise der umfassendste Zeitstempelkonverter, der verfügbar ist. Es beginnt mit der Anzeige der aktuellen Unix-Zeit – in Echtzeit – und fügt darüber hinaus fast alle erdenklichen Funktionen hinzu. Seine Hauptverwendung ist die Konvertierung zwischen Zeitstempeln und menschenlesbaren Daten in beide Richtungen.

Dan’s Tools ist eine riesige Sammlung nützlicher Web-Apps, von denen eine a Zeitstempelkonverter . Es ist einfacher, hat aber eine sehr saubere Präsentation und ist einfach zu bedienen.

Zeit ist präsentiert einen weiteren, noch minimalistischeren Look. Es zeigt die Zeit in einer Reihe von Formaten an, einschließlich der Unix-Zeit. Es enthält die aktuelle Uhrzeit in seinem Seitentitel, was nützlich ist.

Verwenden von Unix-Zeit mit Befehlszeilentools

Unter Linux und macOS ist die Datum Programm ist das zentrale Dienstprogramm für den Umgang mit Datum/Uhrzeit, einschließlich Unix-Zeitstempeln. Ohne Argumente aufgerufen, gibt es das aktuelle Datum/die aktuelle Uhrzeit in einem für Menschen lesbaren Format zurück:

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

Wenn Sie das aktuelle Datum/die aktuelle Uhrzeit in Unix-Zeit benötigen, verwenden Sie die +%s Streit:

$ date +%s
1612960114

Sie können von einem menschenlesbaren Datum in einen Zeitstempel umwandeln, indem Sie die -D markieren, wenn Ihre Version von Datum unterstützt es. Die meisten Linux-Versionen sollten standardmäßig:

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

Unter macOS, Datum ist ein anderes Programm, das einen anderen Satz von Flags erfordert:

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

In die andere Richtung können Sie einen Unix-Zeitstempel mit der -R Flagge:

$ date -r 1600000000
Sun 13 Sep 2020 13:26:40 BST

Einige andere Programme verwenden die %S Format, um mit der Unix-Zeit umzugehen. Wenn Sie beispielsweise das Änderungsdatum einer Datei in Unix-Zeit anzeigen möchten, mit dem Linux-Version von ls , können Sie Folgendes verwenden:

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

Wie man Unix-Zeit in Programmiersprachen verwendet

PHP hat die Zeit() Funktion, die den aktuellen Unix-Zeitstempel zurückgibt. Es ist Datum() Die Funktion verwendet einen Zeitstempel als zweites Argument:

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

JavaScript nähert sich den Dingen auf interessante Weise. Es hat ein Datum.jetzt () -Methode, um die Anzahl der Millisekunden seit der Unix-Epoche zu erhalten. Natürlich können Sie dies durch 1.000 teilen und das Ergebnis runden, um die äquivalente Unix-Zeit in Sekunden zu erhalten:

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

Unix-Zeit verstehen

Unix-Zeit ist ein einfaches Konzept, das an vielen Stellen auftaucht. Wenn Sie es einmal verstanden haben, können Sie es zum Beispiel bei der Berechnung von Zeitunterschieden sehr nützlich finden. Sie können auch erkennen, wann dies die Ursache für bestimmte Fehler sein kann.

Konzepte wie die Epoche und Zeitstempel sind ein wichtiger Bestandteil beim Einstieg in Linux. Um mehr über Essentials zu erfahren, wie z ls , lesen Sie unseren Leitfaden zu grundlegenden Linux-Befehlen.

Teilen Teilen Tweet Email 9 grundlegende Befehle für den Einstieg in Linux

Sie möchten sich mit Linux vertraut machen? Beginnen Sie mit diesen grundlegenden Linux-Befehlen, um Standard-Computing-Aufgaben zu erlernen.

Weiter lesen
Verwandte Themen Über den Autor Bobby Jack(58 veröffentlichte Artikel)

Bobby ist ein Technologie-Enthusiast, der fast zwei Jahrzehnte lang als Software-Entwickler gearbeitet hat. Er hat eine Leidenschaft für Spiele, arbeitet als Rezensionsredakteur beim Switch Player Magazine und vertieft sich in alle Aspekte des Online-Publishing und der Webentwicklung.

Mehr von Bobby Jack

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren