Was ist ein Unix-Timestamp (POSIX-Zeit) und wofür dient er?
Die Ursprünge der Unix-Zeit
Um den Epoch-Zeitstempel – oft als Unix-Zeit, POSIX-Zeit oder einfach Epoch bezeichnet – wirklich zu verstehen, müssen wir auf die Anfänge des Unix-Betriebssystems in den frühen 1970er Jahren zurückblicken. Die Unix-Zeit ist ein System zur Zeiterfassung als fortlaufende Gesamtzahl von Sekunden. Konkret stellt sie die Anzahl der Sekunden dar, die seit der Unix-Epoche vergangen sind. Die Epoche selbst ist als Donnerstag, 1. Januar 1970, 00:00:00 Koordinierte Weltzeit (UTC) definiert.
Als Ken Thompson und Dennis Ritchie die ersten Versionen von Unix in den Bell Labs entwickelten, benötigten sie eine einfache und effiziente Möglichkeit für Computer, Datums- und Zeitangaben darzustellen und zu speichern. Für Menschen lesbare Datumsangaben (wie '29. Juli 2026') sind für Computer extrem komplex zu verarbeiten. Sie beinhalten unregelmäßige Monate (mit 28, 29, 30 oder 31 Tagen), Schaltjahre, Zeitzonen und Sommerzeitumstellungen. Indem die Unix-Entwickler die Zeit als eine einzige, sich kontinuierlich erhöhende Ganzzahl (Integer) darstellten, schufen sie einen universellen, eindeutigen Zeitstandard, der leicht gespeichert, verglichen und mathematisch manipuliert werden kann.
Warum Entwickler heute Epoch-Zeitstempel verwenden
Auch Jahrzehnte später bildet die Unix-Zeit das Rückgrat der modernen IT-Infrastruktur. Aus folgenden Gründen ist sie universell verbreitet:
- Einfachheit und Effizienz: Das Speichern eines 32-Bit- oder 64-Bit-Integers nimmt deutlich weniger Speicherplatz auf der Festplatte und im Arbeitsspeicher in Anspruch als das Speichern eines formatierten Datums-Strings. Wenn Datenbanken Milliarden von Datensätzen enthalten, führt das Einsparen von wenigen Bytes pro Zeile zu massiven Reduzierungen der Speicherkosten und einer verbesserten Datenbank-Indexleistung.
- Zeitzonenunabhängig: Ein Unix-Zeitstempel ist von Natur aus an UTC gebunden. Es spielt keine Rolle, wo sich der Benutzer physisch befindet. Wenn ein Server in Tokio mit einem Client in New York kommuniziert, verhindert die Übertragung eines Epoch-Integers jegliche Verwirrung bezüglich der Zeitzonen. Der Client wandelt den Integer beim Empfang einfach in seine lokale Zeitzone um.
- Einfache mathematische Operationen: Die Berechnung der Dauer zwischen zwei Ereignissen ist so einfach wie das Subtrahieren eines Zeitstempels von einem anderen. Wenn Sie wissen möchten, wie viele Sekunden zwischen zwei Log-Einträgen vergangen sind, liefert
timestamp2 - timestamp1sofort die exakte Antwort – ohne komplexe Datums-Parsing-Logik. - Datenbank-Sortierung: Das chronologische Sortieren von Datensätzen über eine Integer-Spalte ist für Datenbank-Engines erheblich schneller als das Parsen und Sortieren textbasierter Zeitstempel-Strings.
Die Auswirkungen von Schaltsekunden
Eine technische Besonderheit der Unix-Zeit ist der Umgang mit Schaltsekunden. Eine Schaltsekunde ist eine Anpassung um eine Sekunde, die gelegentlich auf die Koordinierte Weltzeit (UTC) angewendet wird, um die Tageszeit nahe an der mittleren Sonnenzeit zu halten. Interessanterweise berücksichtigt die Unix-Zeit Schaltsekunden nicht. Im Unix-Zeitsystem wird jeder einzelne Tag als exakt 86.400 Sekunden lang behandelt. Wenn eine Schaltsekunde auftritt, wiederholt die Unix-Uhr im Wesentlichen dieselbe Sekunde zweimal. Diese bewusste Designentscheidung verhindert, dass Zeitstempel unvorhersehbar werden, bedeutet jedoch auch, dass die Unix-Zeit kein strikt lineares Maß für die seit 1970 verstrichene physische Zeit ist. Für die überwiegende Mehrheit der Softwareanwendungen ist diese kleine Abweichung völlig akzeptabel und der Komplexität der Nachverfolgung jeder historischen Schaltsekunde vorzuziehen.

