Was ist ein Unix-Timestamp?
Ein Unix-Timestamp, auch Unixzeit, Epoch-Zeit oder POSIX-Zeit genannt, ist die Zahl der Sekunden seit dem 1. Januar 1970 um 00:00:00 UTC. Dieser Moment heißt „Epoch“. Eine Sekunde später stand der Zähler auf 1, einen Tag später auf 86.400. Wer einen Unix Timestamp umrechnen will, macht aus dieser Zahl also ein lesbares Datum, oder umgekehrt.
Derselbe Moment hat überall auf der Welt denselben Timestamp. Zeitzonen und Sommerzeit spielen erst eine Rolle, wenn man die Zahl für Menschen wieder in ein Datum verwandelt. Deshalb lieben Server, Datenbanken, Logdateien und APIs die Unixzeit: eine einzige Ganzzahl, ohne Zeitzone, leicht zu sortieren und zu subtrahieren.
Sekunden oder Millisekunden?
Die meisten Systeme zählen Sekunden: Heute ist das eine Zahl mit 10 Ziffern. JavaScript, Java und viele APIs zählen Millisekunden: 13 Ziffern. Manche Datenbanken und Tracing-Werkzeuge gehen bis zu Mikrosekunden (16 Ziffern) oder Nanosekunden (19 Ziffern) hinunter.
Der Umrechner oben schaut auf die Länge der Zahl und wählt die Einheit für dich. Landet ein Datum im Jahr 1970 oder weit in der Zukunft, war die Einheit vermutlich falsch: Teile oder multipliziere dann durch beziehungsweise mit 1.000.
| Timestamp | Datum und Uhrzeit (UTC) | Bemerkung |
|---|---|---|
| 0 | 1. Jan. 1970, 00:00:00 | Die Epoch |
| 1.000.000.000 | 9. Sept. 2001, 01:46:40 | Erster Timestamp mit 10 Ziffern |
| 1.234.567.890 | 13. Feb. 2009, 23:31:30 | Von Entwicklern gefeiert |
| 1.700.000.000 | 14. Nov. 2023, 22:13:20 | Eine runde Zahl der letzten Jahre |
| 2.000.000.000 | 18. Mai 2033, 03:33:20 | Die nächste große runde Zahl |
| 2.147.483.647 | 19. Jan. 2038, 03:14:07 | Letzte Sekunde der Zeit mit 32 Bit (vorzeichenbehaftet) |
Das Jahr-2038-Problem
Viele ältere Systeme speichern den Timestamp in einer vorzeichenbehafteten 32-Bit-Ganzzahl. Der größte Wert, der hineinpasst, ist 2.147.483.647, also der 19. Januar 2038 um 03:14:07 UTC. Eine Sekunde später läuft der Zähler über und springt auf −2.147.483.648. Diese Systeme lesen dann den 13. Dezember 1901 um 20:45:52.
Moderne 64-Bit-Systeme sind für Milliarden Jahre sicher. Das Risiko steckt in eingebetteten Geräten, alten Dateiformaten, Datenbanken mit 32-Bit-Spalten und Code, der die Zeit in eine 32-Bit-Zahl umwandelt. Unter Linux bekamen 32-Bit-Plattformen mit dem Kernel 5.6 im Jahr 2020 und der glibc 2.34 im Jahr 2021 eine 64-Bit-Zeit, aber Programme müssen neu kompiliert werden, um sie zu nutzen. Ein guter Test: Speichere ein Datum im Jahr 2040 und lies es wieder aus.
Unixzeit und Schaltsekunden
Die Unixzeit tut so, als hätte jeder Tag genau 86.400 Sekunden. Die echte UTC hat seit 1972 aber 27 Schaltsekunden bekommen, die letzte am 31. Dezember 2016. Während einer Schaltsekunde wiederholt die Unixzeit meist eine Sekunde oder dehnt die Sekunden drumherum (das nennt man Smearing, einige große Cloud-Anbieter machen das so). Ein Unix-Timestamp ist also kein strenges Zählwerk vergangener SI-Sekunden, sondern die Zahl der Tage mal 86.400 plus die Sekunden des laufenden Tages.
In der Praxis spielt das selten eine Rolle, und künftig noch seltener. Im November 2022 hat die Generalkonferenz für Maß und Gewicht beschlossen, die erlaubte Abweichung zwischen UTC und der Erdrotation bis 2035 zu vergrößern, was praktisch das Ende der Schaltsekunden bedeutet. Der Internationale Erdrotationsdienst (IERS) hat bereits angekündigt, dass es Ende Dezember 2026 keine Schaltsekunde geben wird.
Zeitzonen und Sommerzeit
Ein Timestamp bezeichnet einen Moment, keine Uhrzeit an der Wand. Beim Timestamp 1.700.000.000 war es 23:13 Uhr in Berlin, Wien und Zürich, 22:13 Uhr in London und 17:13 Uhr in New York: drei Ortszeiten, eine einzige Zahl. Wenn du Daten speicherst, behalte den Timestamp (oder ein ISO-8601-Datum mit „Z“) und rechne erst für die Anzeige in Ortszeit um.
Die Zeitumstellung zeigt, warum. In der Nacht Ende Oktober, wenn die Uhren von Sommer- auf Winterzeit zurückgestellt werden, gibt es die Stunde von 2:00 bis 3:00 Uhr zweimal. Eine Ortszeit allein ist dann mehrdeutig. Die Timestamps steigen dagegen Sekunde für Sekunde weiter, ohne Sprung. In der Nacht Ende März fällt eine Stunde der Ortszeit aus, aber kein einziger Timestamp fehlt.
Timestamp oder ISO 8601?
ISO 8601 ist der lesbare Zwilling des Timestamps: 2023-11-14T22:13:20Z bezeichnet denselben Moment wie 1.700.000.000. Ein Timestamp ist kompakt und leicht zu vergleichen, ein ISO-Datum liest man bequem in einem Log oder einer JSON-Datei. Beide sind eindeutig, solange das ISO-Datum ein „Z“ oder einen Versatz wie +01:00 trägt.
Unix-Timestamp im Code
JavaScript
// Aktuelle Unixzeit in Sekunden (Date.now() liefert Millisekunden)
Math.floor(Date.now() / 1000)
// Timestamp in Datum
new Date(1700000000 * 1000).toISOString() // "2023-11-14T22:13:20.000Z"
// Datum in Timestamp
Date.UTC(2026, 0, 1) / 1000 // 1767225600
Python
import time
from datetime import datetime, timezone
int(time.time()) # aktuelle Unixzeit
datetime.fromtimestamp(1700000000, tz=timezone.utc) # 2023-11-14 22:13:20+00:00
int(datetime(2026, 1, 1, tzinfo=timezone.utc).timestamp()) # 1767225600
PHP
time(); // aktuelle Unixzeit
gmdate('Y-m-d H:i:s', 1700000000); // "2023-11-14 22:13:20"
strtotime('2026-01-01 00:00:00 UTC'); // 1767225600
SQL
-- MySQL (FROM_UNIXTIME nutzt die Zeitzone der Sitzung)
SELECT UNIX_TIMESTAMP();
SELECT FROM_UNIXTIME(1700000000);
-- PostgreSQL
SELECT EXTRACT(EPOCH FROM now())::bigint;
SELECT to_timestamp(1700000000);
-- SQLite
SELECT strftime('%s', 'now');
SELECT datetime(1700000000, 'unixepoch');
Shell
date +%s # aktuelle Unixzeit
date -u -d @1700000000 # Linux (GNU date)
date -u -r 1700000000 # macOS und BSD
date -u -d '2026-01-01 00:00' +%s # 1767225600 (GNU date)
Typische Stolperfallen
- Aus Versehen Ortszeit. Wer ein Datum aus „2026-01-01 00:00“ ohne Zeitzone baut, bekommt die Ortszeit des Rechners. In Deutschland liegt das im Winter eine Stunde, im Sommer zwei Stunden neben UTC. Häng „Z“ oder „UTC“ an, oder nutze oben den Schalter UTC, wenn du UTC meinst.
- Sekunden als Millisekunden gelesen. Eine Zahl mit 10 Ziffern, als Millisekunden gelesen, landet im Januar 1970. Eine Zahl mit 13 Ziffern, als Sekunden gelesen, landet zehntausende Jahre in der Zukunft.
- Negative Timestamps. Daten vor 1970 sind negative Zahlen: −86.400 ist der 31. Dezember 1969. Die meisten modernen Werkzeuge kommen damit klar, manche älteren nicht.
Welche Uhrzeit ein Timestamp in einer anderen Stadt ist, zeigt der Zeitzonenrechner. Tage zwischen zwei Daten zählt der Datumsrechner, und Zeiten in Stunden und Minuten addiert der Stundenrechner.