Zum Hauptinhalt springen

← Zurück zum Blog

Der komplette Leitfaden zu Unix-Timestamps (Sekunden, Millisekunden, Zeitzonen)

Wer mit Logs, Datenbanken oder APIs gearbeitet hat, hat eine Zahl wie 1700000000 gesehen, die für ein Datum steht. Das ist ein Unix-Timestamp, und ihn zu verstehen beseitigt eine ganze Kategorie von Zeit-Bugs. Hier das Gesamtbild.

Was ist ein Unix-Timestamp?

Ein Unix-Timestamp ist die Anzahl der seit der Unix-Epoche verstrichenen Sekunden — 00:00:00 UTC am 1. Januar 1970. Da er von einem festen Punkt in UTC gezählt wird, ist er eine einzige absolute Zahl, die überall auf der Welt dasselbe bedeutet, unabhängig von der Zeitzone.

Genau diese Eigenschaft lieben Systeme: Zwei Server in verschiedenen Ländern können Timestamps direkt vergleichen, ganz ohne Zeitzonen-Rechnerei.

Sekunden vs. Millisekunden

Das ist die häufigste Verwechslungsquelle. Verschiedene Plattformen nutzen verschiedene Einheiten:

  • Sekunden — eine 10-stellige Zahl, z. B. 1700000000. Verbreitet in Unix-Tools, Datenbanken und vielen APIs.
  • Millisekunden — eine 13-stellige Zahl, z. B. 1700000000000. JavaScripts Date.now() liefert dies.

Faustregel: 10 Stellen = Sekunden, 13 Stellen = Millisekunden. Kommt ein Datum um das Jahr 1970 heraus, hast du wahrscheinlich Millisekunden übergeben, wo Sekunden erwartet wurden (oder umgekehrt). Unser Timestamp-Umrechner erkennt die Einheit automatisch an der Stellenzahl, sodass du nicht raten musst.

Zeitzonen und UTC

Ein Timestamp selbst hat keine Zeitzone — er ist ein absoluter Moment. Die Zeitzone spielt nur eine Rolle, wenn du ihn anzeigst. Derselbe Timestamp 1700000000 ist:

  • 2023-11-14 22:13:20 in UTC
  • 2023-11-14 23:13:20 in UTC+1 (Berlin)

Beide sind derselbe Moment, in verschiedenen Zonen dargestellt. Bestätige beim Debuggen immer, in welcher Zone eine angezeigte Zeit steht — unser Umrechner zeigt deine lokale Zeit und UTC nebeneinander, um Fehler zu vermeiden.

Umwandeln im Code

Die meisten Sprachen machen die Umwandlung einfach:

// JavaScript (Millisekunden)
const now = Date.now();               // 1700000000000
const date = new Date(1700000000000); // Date-Objekt
const seconds = Math.floor(Date.now() / 1000);
# Python (Sekunden)
import time
now = int(time.time())                # 1700000000
from datetime import datetime, timezone
dt = datetime.fromtimestamp(1700000000, tz=timezone.utc)

Beachte, dass JavaScript in Millisekunden arbeitet, während Pythons time.time() Sekunden liefert — ein weiterer Grund, die Einheiten sauber zu halten.

Das Jahr-2038-Problem (kurz)

Systeme, die Timestamps als vorzeichenbehaftete 32-Bit-Ganzzahl speichern, laufen am 19. Januar 2038 über. Moderne Systeme nutzen 64-Bit-Ganzzahlen, was die Grenze Hunderte Milliarden Jahre nach hinten schiebt, sodass es heute selten ein Problem ist — aber es lohnt zu wissen, warum es 64-Bit-Zeit gibt.

Schnelle Umrechnungen

Musst du gerade einen Timestamp prüfen? Füge ihn in den kostenlosen Unix-Timestamp-Umrechner ein, um lokales und UTC-Datum sofort zu sehen, ein Datum zurück in einen Timestamp umzuwandeln oder den aktuellen Timestamp zu kopieren. Er läuft im Browser — keine Verbindung nötig.