webtrajans
de

Unix-Timestamp erklärt: So zählen Computer die Zeit

Ein Unix-Timestamp ist die Zahl der Sekunden seit dem 1. Januar 1970, 00:00 Uhr UTC. Klingt einfach, sorgt aber für erstaunlich viele Fehler – von verschobenen Stunden bis zum Jahr-2038-Problem.

Aktualisiert: 5 Min. Lesezeit

Wer mit Logdateien, Datenbanken, APIs oder JavaScript arbeitet, stößt früher oder später auf zehn- oder dreizehnstellige Zahlen wie 1791460800. Das ist ein Unix-Timestamp (auch Epoch-Zeit oder POSIX-Zeit): die Anzahl der Sekunden, die seit dem 1. Januar 1970, 00:00:00 UTC vergangen sind. Dieser Startpunkt heißt Unix-Epoche. Der Vorteil: Ein einziger Zahlenwert beschreibt einen Zeitpunkt eindeutig – ohne Datumsformat, ohne Zeitzone, ohne Sommerzeit. Rechnen ist trivial: Differenz zweier Zeitstempel geteilt durch 86.400 ergibt die Tage dazwischen.

Beispiele

Timestamp UTC Deutsche Zeit
0 01.01.1970, 00:00:00 01:00:00 MEZ
1000000000 09.09.2001, 01:46:40 03:46:40 MESZ
1791460800 08.10.2026, 12:00:00 14:00:00 MESZ
1800000000 15.01.2027, 08:00:00 09:00:00 MEZ
2147483647 19.01.2038, 03:14:07 04:14:07 MEZ

Mit dem Unix-Timestamp-Umrechner wandeln Sie Werte in beide Richtungen um und sehen sofort UTC und Ortszeit.

Sekunden oder Millisekunden?

Der häufigste Fehler im Alltag: Sekunden und Millisekunden verwechseln.

Einheit Stellen (aktuell) Typisch in
Sekunden 10 Unix/Linux, PHP, Python time.time(), MySQL UNIX_TIMESTAMP()
Millisekunden 13 JavaScript Date.now(), Java, viele REST-APIs
Mikrosekunden 16 PostgreSQL intern, Python datetime
Nanosekunden 19 Go, InfluxDB, Prometheus

Wer einen Millisekundenwert als Sekunden interpretiert, landet im Jahr 58.000 und später. Umgekehrt ergibt ein Sekundenwert als Millisekunden ein Datum im Januar 1970. Beide Symptome sind eindeutige Hinweise.

// JavaScript: Sekunden ↔ Millisekunden
const sek = Math.floor(Date.now() / 1000);
const datum = new Date(1791460800 * 1000);
# Linux/macOS: aktueller Timestamp und Rückwandlung
date +%s
date -u -d @1791460800        # GNU/Linux
date -u -r 1791460800         # macOS

Zeitzonen und Sommerzeit

Ein Timestamp kennt keine Zeitzone – er beschreibt überall auf der Welt denselben Moment. Fehler entstehen erst bei der Umwandlung in eine lesbare Uhrzeit:

  • Speichern in UTC: Speichern Sie Zeitpunkte als Timestamp oder als ISO-8601-String mit Z bzw. Offset (2026-10-08T12:00:00Z).
  • Anzeige in Ortszeit: Erst im Frontend oder Bericht in Europe/Berlin umrechnen. Die IANA-Zone kennt die Sommerzeitregeln; ein fester Offset +01:00 ist im Sommer falsch.
  • Lokale Zeit ohne Zone wie 2026-10-25 02:30 ist in Deutschland mehrdeutig: An diesem Tag gibt es 2:30 Uhr zweimal (erst MESZ, dann MEZ).

Wie Zeitzonen und Umstellungstermine zusammenhängen, erklärt der Ratgeber Zeitzonen erklärt.

Schaltsekunden: Unix-Zeit ignoriert sie. Jeder Tag hat exakt 86.400 Sekunden. Für Anwendungen jenseits der Wissenschaft spielt das keine Rolle.

Das Jahr-2038-Problem

Viele ältere Systeme speichern den Timestamp als vorzeichenbehaftete 32-Bit-Ganzzahl. Deren Maximum ist 2.147.483.647 – erreicht am 19. Januar 2038 um 03:14:07 UTC. Eine Sekunde später springt der Wert ins Negative und wird als 13. Dezember 1901 interpretiert.

Betroffen sein können:

  • eingebettete Systeme (Industriesteuerungen, Router, Fahrzeuge) mit langer Lebensdauer
  • alte Dateiformate und Datenbankspalten (z. B. MySQL-Typ TIMESTAMP mit Obergrenze 2038)
  • Software, die heute schon Daten nach 2038 verarbeitet, etwa 30-jährige Kredite oder Zertifikate

Moderne Betriebssysteme und Sprachen verwenden 64-Bit-Zeitstempel; damit reicht der Wertebereich für Milliarden Jahre. Prüfen Sie aber Datenbankschemata: Für Daten jenseits 2038 eignet sich in MySQL DATETIME oder ein BIGINT.

Cron-Syntax: Zeitpläne für Aufgaben

Zeitstempel und Cron begegnen sich oft: Cron startet Skripte nach Zeitplan, die Logs schreiben Timestamps. Ein Cron-Ausdruck hat fünf Felder:

┌──────── Minute (0–59)
│ ┌────── Stunde (0–23)
│ │ ┌──── Tag des Monats (1–31)
│ │ │ ┌── Monat (1–12)
│ │ │ │ ┌ Wochentag (0–7, 0 und 7 = Sonntag)
│ │ │ │ │
* * * * *  Befehl
Ausdruck Bedeutung
0 3 * * * täglich um 3:00 Uhr
*/15 * * * * alle 15 Minuten
0 8 * * 1-5 werktags um 8:00 Uhr
0 0 1 * * am Ersten jedes Monats um Mitternacht
0 9 * * 1 montags um 9:00 Uhr

Wichtige Hinweise:

  • Cron läuft in der Zeitzone des Servers – oft UTC. Ein Job „um 8 Uhr“ läuft dann um 9 oder 10 Uhr deutscher Zeit.
  • Jobs zwischen 2:00 und 3:00 Uhr können bei der Zeitumstellung ausfallen oder doppelt laufen, wenn der Server in Ortszeit arbeitet.
  • Sind Tag des Monats und Wochentag gesetzt, startet klassischer Cron den Job, wenn eines von beiden zutrifft.

Den passenden Ausdruck stellen Sie im Cron-Generator zusammen und sehen die nächsten Ausführungszeiten.

Praxis-Tipps

  • Einheit im Feldnamen: created_at_ms oder expires_s verhindert Verwechslungen.
  • Ganzzahlen statt Gleitkomma für Timestamps verwenden; JavaScript-Zahlen sind bis 2^53 − 1 exakt, das reicht für Millisekunden bis weit in die Zukunft.
  • Differenzen rechnen: (t2 − t1) / 86400 ergibt Tage, aber bei Kalendertagen über eine Zeitumstellung hinweg rechnen Sie besser mit Datumsbibliotheken. Tage zwischen zwei Kalenderdaten zeigt der Rechner Tage zwischen zwei Daten.
  • APIs dokumentieren: In JSON-Antworten klar angeben, ob Sekunden, Millisekunden oder ISO-Strings verwendet werden; siehe JSON Grundlagen.

Timestamps in Datenbanken und Logs

  • MySQL/MariaDB: FROM_UNIXTIME(1791460800) wandelt in ein Datum, UNIX_TIMESTAMP() liefert den aktuellen Wert. Die Ausgabe hängt von der Zeitzone der Sitzung ab.
  • PostgreSQL: to_timestamp(1791460800) liefert einen timestamptz; extract(epoch from now()) den aktuellen Wert inklusive Nachkommastellen.
  • Excel und Google Sheets: Ein Sekunden-Timestamp in Zelle A1 wird mit =A1/86400+DATUM(1970;1;1) zu einem Datum in UTC; für deutsche Zeit addieren Sie 1/24 bzw. 2/24.
  • Logdateien: Webserver schreiben oft lokale Zeit mit Offset (08/Oct/2026:14:00:00 +0200). Beim Zusammenführen von Logs mehrerer Server immer in UTC umrechnen.

Checkliste

  • 10 Stellen = Sekunden, 13 Stellen = Millisekunden.
  • Intern in UTC speichern, erst bei der Anzeige in Ortszeit umrechnen.
  • IANA-Zonen statt fester Offsets.
  • 32-Bit-Felder und TIMESTAMP-Spalten auf 2038 prüfen.
  • Cron-Zeitzone des Servers kennen, Zeitumstellung beachten.

Häufige Fragen

Was ist ein Unix-Timestamp?

Die Anzahl der Sekunden seit dem 1. Januar 1970, 00:00:00 UTC, ohne Schaltsekunden. Der Wert 1791460800 entspricht zum Beispiel dem 8. Oktober 2026, 12:00 Uhr UTC (14:00 Uhr MESZ).

Wie erkenne ich Sekunden oder Millisekunden?

An der Länge: Aktuelle Zeitstempel in Sekunden haben 10 Stellen, in Millisekunden 13 Stellen. JavaScript arbeitet mit Millisekunden, die meisten Datenbanken und Unix-Tools mit Sekunden.

Was ist das Jahr-2038-Problem?

Systeme, die den Timestamp als vorzeichenbehaftete 32-Bit-Zahl speichern, laufen am 19. Januar 2038 um 03:14:07 UTC über. Danach springt die Zeit auf das Jahr 1901. Moderne 64-Bit-Systeme sind nicht betroffen.

Hat ein Unix-Timestamp eine Zeitzone?

Nein. Er bezeichnet einen weltweit eindeutigen Zeitpunkt. Erst bei der Anzeige wird er in eine Ortszeit wie MEZ oder MESZ umgerechnet.

Weitere Ratgeber