Wie Sie Unix-Timestamps konvertieren
Unix-Zeitstempel sind die Art und Weise, wie Computer Zeit speichern und kommunizieren: eine einzelne Zahl, die die Sekunden seit dem 1. Januar 1970 repräsentiert. Sie erscheinen in API-Antworten, Datenbankeinträgen, Logdateien und JWT-Tokens. Wenn Sie wissen müssen, welches Datum 1711824000 tatsächlich ist, brauchen Sie einen Konverter. Ein browserbasierter Konverter erledigt die Mathematik sofort und ermöglicht Ihnen, in beide Richtungen zu gehen (Zeitstempel zu Datum, Datum zu Zeitstempel).
So sieht ein Unix-Zeitstempel aus
| Zeitstempel | Typ | Menschlich lesbar |
|---|---|---|
| 0 | Sekunden | 1. Jan 1970 00:00:00 UTC |
| 1000000000 | Sekunden | 9. Sep 2001 01:46:40 UTC |
| 1234567890 | Sekunden | 13. Feb 2009 23:31:30 UTC |
| 1711824000 | Sekunden | 31. Mär 2024 00:00:00 UTC |
| 1711824000000 | Millisekunden | 31. Mär 2024 00:00:00 UTC |
| 2147483647 | Sekunden | 19. Jan 2038 03:14:07 UTC (32-Bit-signiert-Maximum) |
Der Unterschied zwischen Sekunden und Millisekunden sind drei zusätzliche Nullen. Eine 10-stellige Zahl ist in Sekunden; 13 Stellen ist in Millisekunden. Ab 2024 sind alle sekundenbasierten Unix-Zeitstempel 10-stellig und werden bis November 2286 so bleiben.
So konvertieren Sie Zeitstempel
- Geben Sie einen Zeitstempel oder ein Datum ein: Fügen Sie einen Unix-Zeitstempel ein, um ihn in ein lesbares Datum umzuwandeln, oder geben Sie ein Datum ein, um den Zeitstempel zu erhalten.
- Überprüfen Sie das Format: Der Konverter erkennt automatisch Sekunden vs. Millisekunden basierend auf der Zahlenlänge.
- Lesen Sie das Ergebnis: Sehen Sie das Datum in Ihrer lokalen Zeitzone, UTC und im ISO 8601-Format.
Eine kurze Geschichte der Unix-Zeit
Die Unix-Zeit wurde erstmals im Unix Programmer's Manual definiert, das im November 1971 bei den Bell Labs veröffentlicht wurde. Die ursprüngliche Epoche war der 1. Januar 1971, aber sie wurde kurz darauf in den 1. Januar 1970 geändert und in POSIX.1 (1988) standardisiert.
Die Wahl von 1970 war willkürlich, aber praktisch: Unix wurde 1969-1971 entwickelt, und mit der Zählung in der Nähe der Geburt des Betriebssystems zu beginnen, schien vernünftig. Eine 32-Bit-signierte Ganzzahl, die Sekunden ab 1970 zählt, ergab einen Bereich von Dezember 1901 bis Januar 2038, was die Designer für ausreichend hielten.
Es ist nicht. Das «Jahr-2038-Problem» (auch Y2K38 genannt) ist der Moment, in dem 32-Bit-signierte Unix-Zeitstempel überlaufen: 2147483647 Sekunden nach der Epoche kippt das nächste Tick auf eine negative Zahl, die Systeme als Dezember 1901 interpretieren. Die meisten modernen Systeme sind in den 2000er und 2010er Jahren auf 64-Bit-Ganzzahl-Zeitstempel migriert, aber einige eingebettete Geräte, ältere Datenbanken und Legacy-Dateiformate verwenden immer noch 32-Bit-Zeit und werden vor 2038 Patches benötigen.
Die Unix-Zeit ist jetzt der De-facto-Standard für die Darstellung von Zeit in Computersystemen. JSON-APIs, Datenbankzeilen-Zeitstempel, JWT-Ablaufdaten, Blockchain-Blockzeiten, IoT-Sensorablesungen: Fast alle verwenden die Unix-Epoche direkt oder indirekt.
Sekunden, Millisekunden, Mikrosekunden, Nanosekunden
Verschiedene Systeme verwenden unterschiedliche Präzisionen:
- Sekunden (10 Stellen in 2024): klassische Unix-Zeit, POSIX-Standard, die meisten APIs und Datenbanken
- Millisekunden (13 Stellen): JavaScript
Date, JavaSystem.currentTimeMillis(), viele Web-APIs - Mikrosekunden (16 Stellen): PostgreSQL
timestamp, Pythondatetime(nach Konvertierung) - Nanosekunden (19 Stellen): Go
time.UnixNano(), eBPF-Tracing, Hochfrequenz-Handelssysteme
Ein 19-stelliger Zeitstempel kann Konverter verwirren, die Millisekunden erwarten; überprüfen Sie die Quelldokumentation doppelt, wenn Sie anomale Zahlen sehen.
Wo Sie Zeitstempel begegnen
- API-Antworten: Die meisten REST-APIs geben Daten als Unix-Zeitstempel zurück:
"created_at": 1711824000 - JWT-Tokens: Die Claims
iat(ausgestellt am) undexp(Ablauf) sind Unix-Zeitstempel - Datenbankeinträge: Viele Datenbanken speichern Zeitstempel als Ganzzahlen für effiziente Sortierung und Vergleich
- Logdateien: Serverlogs versehen Einträge oft mit Epoch-Zeitstempeln als Präfix
- Cron-Jobs: Scheduling-Systeme verweisen auf Zeit im Unix-Format
- Dateisystem mtime/atime/ctime: Linux- und macOS-Dateimetadaten verwenden Unix-Zeit
- Blockchain-Blockzeitstempel: Jeder Bitcoin- und Ethereum-Block hat einen Unix-Zeitstempel in seinem Header
- Cookies und HTTP-Header:
Max-Age,If-Modified-Sinceverwenden oft indirekt Epoch-Mathematik
Zeitstempel im Code
Schnelle Konvertierung in gängigen Sprachen:
JavaScript:
new Date(1711824000 * 1000) // Aus Sekunden (mit 1000 multiplizieren)
new Date(1711824000000) // Aus Millisekunden
Math.floor(Date.now() / 1000) // Aktuelle Zeit in Sekunden
Date.now() // Aktuelle Zeit in Millisekunden
Python:
from datetime import datetime, timezone
datetime.fromtimestamp(1711824000, tz=timezone.utc)
datetime.now(timezone.utc).timestamp() # Aktuelle Zeit in Sekunden (float)
Bash:
date -u -d @1711824000 # GNU date (Linux)
date -u -r 1711824000 # BSD date (macOS)
date +%s # Aktuelle Zeit in Sekunden
SQL (PostgreSQL):
SELECT TO_TIMESTAMP(1711824000); -- Epoch in Timestamp konvertieren
SELECT EXTRACT(EPOCH FROM NOW()); -- Aktuelle Epoche
Go:
time.Unix(1711824000, 0) // Aus Sekunden
time.Now().Unix() // Aktuelle Zeit in Sekunden
Zeitzonen-Handhabung
Hier verstecken sich die meisten Zeitstempel-Bugs:
- Unix-Zeitstempel sind immer UTC. Es gibt keinen «lokale Zeit»-Unix-Zeitstempel. Die Zahl selbst ist absolut.
- Anzeige-Zeitzone ist wichtig. Der gleiche Zeitstempel
1711824000wird angezeigt als:2024-03-31 00:00:00 UTC2024-03-30 17:00:00 PDT(Los Angeles, UTC-7)2024-03-31 09:00:00 JST(Tokio, UTC+9)
- Sommerzeit-Übergänge sind knifflig. Eine lokale Zeit wie «2024-03-10 02:30:00 EST» existiert nicht (Uhr sprang von 02:00 zu 03:00). Konverter behandeln dies unterschiedlich; einige geben einen Fehler zurück, einige runden auf 03:30, einige wechseln zu Standardzeit.
- Schaltsekunden werden ignoriert. Unix-Zeit tut so, als hätte jede Minute genau 60 Sekunden. Echte UTC fügt gelegentlich Schaltsekunden ein (die letzte war 2016). Für 99% der Verwendungen ist das in Ordnung; für Präzisions-Astronomie oder Atomuhren ist es wichtig.
Beim Senden von Zeitstempeln in APIs verwenden Sie immer UTC-Sekunden. Beim Anzeigen für Benutzer konvertieren Sie in ihre lokale Zeitzone. Der Konverter handhabt beide Richtungen.
Häufige Fallstricke
- Der JavaScript-
Date()-Konstruktor nimmt Millisekunden, nicht Sekunden: Der Bug Nr. 1 bei Zeitstempeln.new Date(1711824000)interpretiert die Zahl als 20. Januar 1970, weil JS sie als Millisekunden liest. Sie brauchennew Date(1711824000 * 1000). - Unix-Zeit und Excel/Google Sheets-Datumszahlen vermischen: Excel verwendet eine andere Epoche (30. Dezember 1899) und zählt Tage, nicht Sekunden. Das Importieren eines Unix-Zeitstempels in eine Datumsspalte zeigt das falsche Datum an.
- Negative Zeitstempel: Daten vor dem 1. Januar 1970 werden als negative Unix-Zeitstempel dargestellt. Einige Konverter und Datenbanken lehnen sie ab; andere handhaben sie korrekt.
- Jahr 2038 in Legacy-Code: 32-Bit-signierte Ganzzahl-Zeitstempel überlaufen am 19. Januar 2038 um 03:14:07 UTC. Die meisten modernen Systeme verwenden 64-Bit, aber überprüfen Sie eingebettete Geräte, alte SQLite-Datenbanken und 32-Bit-Betriebssysteme.
- Locale-abhängige Datums-Analyse: «03/04/2024» ist 4. März im amerikanischen Englisch, 3. April im britischen Englisch. Geben Sie immer Zeitstempel (oder ISO 8601-Strings) zwischen Systemen weiter; niemals locale-formatierte Strings.
- Sub-Sekunden-Präzisionsverlust: Das Speichern eines Millisekunden-Zeitstempels in einem Sekunden-Präzisionsfeld verliert die letzten 3 Stellen. Einige APIs geben beide Formate zurück (
created_atin Sekunden,created_at_msin Millisekunden), um dies zu vermeiden.
Tipps
- Mit 1000 multiplizieren für JavaScript: JS
Dateerwartet Millisekunden, aber die meisten APIs geben Sekunden zurück. Das Vergessen zu multiplizieren ist der häufigste Zeitstempel-Bug. - Geben Sie immer UTC an: Bei der Konvertierung seien Sie explizit über die Zeitzone. «31. März um Mitternacht» ist ein anderer Zeitstempel, je nachdem, ob Sie UTC, EST oder PST meinen.
- Verwenden Sie ISO 8601 für die Anzeige: Nach der Konvertierung formatieren Sie Daten als
2024-03-31T00:00:00Zfür eindeutige Kommunikation über Zeitzonen hinweg. - Setzen Sie den Konverter als Lesezeichen: Wenn Sie mit APIs oder Datenbanken arbeiten, werden Sie Zeitstempel oft genug konvertieren, um ihn auf einen Klick haben zu wollen.
- Hin- und Rückweg zur Überprüfung: Im Zweifelsfall konvertieren Sie Ihren Zeitstempel in ein Datum, dann konvertieren Sie das Datum zurück in einen Zeitstempel. Wenn Sie die gleiche Zahl erhalten, ist Ihr Verständnis korrekt.
- Achten Sie auf die Anzahl der Stellen: 10 = Sekunden, 13 = Millisekunden, 16 = Mikrosekunden, 19 = Nanosekunden. Wenn Ihre Mathematik um einen Faktor 1000 oder 1000000 daneben liegt, haben Sie eine Präzisions-Diskrepanz.
Datenschutz
Der Unix-Zeitstempel-Konverter läuft vollständig in Ihrem Browser. Die Zeitstempel und Daten, die Sie eingeben, verlassen Ihr Gerät nie. Das ist wichtig, weil Zeitstempel sensibel sein können: Sie können aus Logdateien stammen, die das Timing der internen Infrastruktur offenbaren, JWT-Tokens mit eingebetteten Benutzer-/Sitzungs-Informationen, internes API-Debugging, das nicht mit Dritten geteilt werden sollte. Cloud-Zeitstempel-Konverter können Eingaben zu «Verbesserungs»-Zwecken protokollieren; ein nur im Browser laufender Konverter hat keine Exposition.
Die browserbasierte Konvertierung funktioniert auch offline, sobald die Seite geladen ist, und ist schnell genug, dass Sie einen Zeitstempel in das Feld fallen lassen und das Datum im gleichen Moment sehen können.
Häufig gestellte Fragen
Was ist Unix-Epoch-Zeit?
Unix-Epoch-Zeit (auch POSIX-Zeit oder Unix-Timestamp genannt) ist die Anzahl der Sekunden, die seit dem 1. Januar 1970 um 00:00:00 UTC vergangen sind. Es ist die Standardweise, wie Computer Zeit intern darstellen.
Was ist der Unterschied zwischen Sekunden- und Millisekunden-Timestamps?
Unix-Timestamps in Sekunden sind 10 Stellen lang (z. B. 1711824000). Millisekunden-Timestamps sind 13 Stellen lang (z. B. 1711824000000). JavaScript verwendet Millisekunden, die meisten APIs und Datenbanken Sekunden. Der Konverter erkennt die Längen automatisch.
Warum ist meine konvertierte Zeit um mehrere Stunden falsch?
Timestamps sind immer in UTC. Der Konverter zeigt sowohl UTC als auch Ihre Ortszeit. Stimmt das Ergebnis nicht mit Ihrer Erwartung überein, vergleichen Sie wahrscheinlich UTC-Ausgabe mit Ortszeit oder umgekehrt.
Was passiert 2038?
Systeme, die Unix-Timestamps als 32-Bit-Integer mit Vorzeichen speichern, laufen am 19. Januar 2038 über. Die meisten modernen Systeme nutzen 64-Bit-Integer, die den Bereich weit über jede praktische Sorge hinaus erweitern.