Was ist ein Unix-Zeitstempel? Der vollstÀndige Leitfaden
Was ist ein Unix-Zeitstempel?
Ein Unix-Zeitstempel (auch POSIX-Zeit oder Epochenzeit genannt) ist ein System zur Zeiterfassung, das die Anzahl der Sekunden zĂ€hlt, die seit der Unix-Epoche â 00:00:00 UTC am 1. Januar 1970 â vergangen sind, ohne Schaltsekunden.
Im Gegensatz zu menschenlesbaren Daten, die je nach Zeitzone variieren (â19. Juli 2026, 15:30 Uhr MEZ"), ist ein Unix-Zeitstempel eine einzelne Ganzzahl, die denselben Moment ĂŒberall auf der Erde reprĂ€sentiert. Beispielsweise entspricht der Zeitstempel 1785292800 einem bestimmten Augenblick, unabhĂ€ngig davon, ob Sie sich in New York, London oder Tokio befinden.
Unix-Zeitstempel sind das RĂŒckgrat der Zeitverwaltung in der modernen Computertechnik. Betriebssysteme, Programmiersprachen, Datenbanken und Dateisysteme verlassen sich unter der Haube alle auf diese einfache Ganzzahldarstellung.
Die Unix-Epoche: Warum der 1. Januar 1970?
Die Wahl des 1. Januar 1970 als âEpoche" (der Startpunkt) war nicht willkĂŒrlich. Mehrere praktische Ăberlegungen fĂŒhrten zu dieser Entscheidung:
- FrĂŒhe Unix-Entwicklung: Das Betriebssystem Unix wurde in den spĂ€ten 1960er und frĂŒhen 1970er Jahren bei den Bell Labs entwickelt. Als das Zeitsystem in den frĂŒhen 1970er Jahren standardisiert wurde, war der 1. Januar 1970 ein sauberer, naheliegender Bezugspunkt.
- Einfachheit: Die Zeit wurde auf frĂŒhen Unix-Systemen als 32-Bit-Ganzzahl mit Vorzeichen gespeichert, die Sekunden zĂ€hlte. Die Verwendung eines nahen Datums maximierte den darstellbaren Bereich in die Zukunft.
- PrĂ€zedenzfall: Die Epoche wurde im ersten POSIX-Standard formalisiert und damit zur universellen Referenz fĂŒr von Unix abgeleitete Systeme.
FrĂŒhere Unix-Ă€hnliche Systeme hatten andere Epochendaten verwendet, aber die Epoche von 1970 setzte sich durch und ist seither der Standard fĂŒr alle POSIX-konformen Systeme.
Wie der Zeitstempelwert funktioniert
Die Kernidee ist einfach:
- Ein Zeitstempel von
0bedeutet genau 1. Januar 1970, 00:00:00 UTC - Ein Zeitstempel von
86400(60 Ă 60 Ă 24) bedeutet 2. Januar 1970, 00:00:00 UTC - Ein Zeitstempel von
-3600bedeutet 31. Dezember 1969, 23:00:00 UTC (negative Zeitstempel reprÀsentieren Daten vor der Epoche)
Die Formel ist einfach:
timestamp = seconds since 1970-01-01 00:00:00 UTC
Millisekunden-Zeitstempel
Viele moderne Systeme, insbesondere JavaScript und Web-APIs, verwenden Millisekunden anstelle von Sekunden. Ein Millisekunden-Zeitstempel ist einfach der auf Sekunden basierende Wert multipliziert mit 1000:
- JavaScript
Date.now()gibt Millisekunden zurĂŒck - Python
time.time()gibt Sekunden als Gleitkommazahl mit Bruchteilen von Millisekunden zurĂŒck
ĂberprĂŒfen Sie immer, welche Auflösung ein System verwendet, bevor Sie konvertieren, da das Vermischen zu Daten fĂŒhren kann, die um Jahrzehnte danebenliegen.
Das Jahr-2038-Problem
Das Jahr-2038-Problem (auch âUnix-Millennium-Bug" oder âY2K38" genannt) ist ein Problem der Zeitdarstellung, das Systeme betrifft, die Zeitstempel als 32-Bit-Ganzzahlen mit Vorzeichen speichern.
Eine 32-Bit-Ganzzahl mit Vorzeichen kann Werte von ungefÀhr -2,1 Milliarden bis +2,1 Milliarden aufnehmen. Der maximal darstellbare Unix-Zeitstempel ist 2147483647, was entspricht:
- 19. Januar 2038, 03:14:07 UTC
Eine Sekunde spĂ€ter wĂŒrde der Wert auf -2147483648 ĂŒberlaufen, was den 13. Dezember 1901 darstellt â wodurch Systeme die aktuelle Zeit als ein Datum aus dem frĂŒhen 20. Jahrhundert interpretieren.
Welche Systeme sind betroffen?
- Eingebettete GerÀte und IoT-Hardware mit 32-Bit-Prozessoren
- Ăltere eingebettete Linux-Kernel
- Legacy-Datenbanken mit Zeit-Spalten als 32-Bit-Ganzzahlen
- Dateisysteme und BinÀrformate, die Zeit als 32-Bit-Ganzzahlen speichern
Die Lösung
Moderne Systeme sind gröĂtenteils auf 64-Bit-Ganzzahlen fĂŒr die Zeitspeicherung umgestiegen. Eine 64-Bit-Ganzzahl mit Vorzeichen kann Zeiten bis zu ungefĂ€hr 292 Milliarden Jahre in die Zukunft darstellen â fĂŒr jeden praktischen Zweck praktisch unendlich.
- Die meisten modernen Linux-Distributionen auf 64-Bit-Hardware sind bereits sicher
- Der Linux-Kernel verwendet auf 64-Bit-Systemen seit Jahren ein 64-Bit-time_t
- Kernel 5.6+ fĂŒhrte 64-Bit-time_t-UnterstĂŒtzung fĂŒr 32-Bit-Architekturen ein
- Programmiersprachen wie Python, Go und Java verwenden intern 64-Bit-Ganzzahlen
Wenn Sie eingebettete Systeme oder Legacy-Software pflegen, ist die ĂberprĂŒfung Ihrer time_t-GröĂe eine lohnenswerte Ăbung.
UTC und die Beziehung zu Unix-Zeitstempeln
Unix-Zeitstempel sind von Natur aus zeitzonenunabhĂ€ngig â sie beziehen sich immer auf UTC.
Was ist UTC?
Die koordinierte Weltzeit (UTC) ist der primÀre Zeitstandard, nach dem die Welt Uhren und Zeit reguliert. Sie ersetzte die Greenwich Mean Time (GMT) als internationalen Standard und wird von Atomuhren aufrechterhalten.
Warum UTC fĂŒr Unix-Zeitstempel wichtig ist
- Unix-Zeitstempel sind in UTC definiert, sodass ein Zeitstempel denselben Moment weltweit reprÀsentiert
- Die Konvertierung eines Unix-Zeitstempels in lokale Zeit ist eine reine Anzeigeebenen-Angelegenheit
- In dem Zeitstempel selbst werden keine Zeitzoneninformationen gespeichert, was das System einfach und portabel hÀlt
Dieses Design bedeutet, dass Sie einen Unix-Zeitstempel mit jedem auf der Welt teilen können und beide Parteien ihn ohne Mehrdeutigkeit in ihre eigene lokale Zeit konvertieren können.
Schaltsekunden: Die seltene Ausnahme
Unix-Zeitstempel zĂ€hlen theoretisch Sekunden seit der Epoche, aber sie ignorieren Schaltsekunden. Ein Tag mit einer hinzugefĂŒgten Schaltsekunde hat in der Unix-Zeit trotzdem genau 86400 Sekunden. Das bedeutet, dass der Unix-Zeitstempel wĂ€hrend einer Schaltsekunde nicht weiterzĂ€hlt und die Schaltsekunde effektiv aus der ZĂ€hlung verschwindet.
Diese Vereinfachung hĂ€lt das System praktisch, bedeutet aber, dass Unix-Zeitstempel geringfĂŒgig von der Atomzeit abweichen. Die Abweichung ist klein genug, dass sie fĂŒr alltĂ€gliche Anwendungen selten eine Rolle spielt.
HĂ€ufige Zeitstempelbereiche
| Zeitstempel | Menschendaten | Bedeutung | |-----------|---------------------|--------------| | 0 | 1970-01-01 00:00:00 UTC | Die Unix-Epoche | | 86400 | 1970-01-02 00:00:00 UTC | Ein Tag nach der Epoche | | 946684800 | 2000-01-01 00:00:00 UTC | Das Jahr 2000 | | 1234567890 | 2009-02-13 23:31:30 UTC | Ein einprÀgsames Muster | | 1785292800 | 2026-07-19 00:00:00 UTC | Die heutige Epoche | | 2147483647 | 2038-01-19 03:14:07 UTC | 32-Bit-Maximum |
Zusammenfassung
Ein Unix-Zeitstempel ist eine elegante, portable Möglichkeit, Zeit als eine einzelne Ganzzahl darzustellen. Sein Design â das ZĂ€hlen von Sekunden seit dem 1. Januar 1970 UTC â macht ihn zum universellen Zeitstandard ĂŒber Betriebssysteme, Datenbanken und Programmiersprachen hinweg. WĂ€hrend das 2038-Problem fĂŒr Legacy-Systeme droht, stellt der laufende Ăbergang zu 64-Bit-Zeit sicher, dass der Unix-Zeitstempel fĂŒr kommende Generationen das Fundament der computergestĂŒtzten Zeitmessung bleibt.
Bereit, mit Unix-Zeitstempeln zu arbeiten? Verwenden Sie unseren Unix-Zeitstempel-Konverter, um sofort zwischen Zeitstempeln und menschenlesbaren Daten zu konvertieren.