Unix-Timestamps ein für alle Mal verstehen

Sie möchten einen Unix-Timestamp online in ein Datum umwandeln oder ein Datum in einen Unix-Timestamp konvertieren? Unix-Timestamps sind in der Entwicklung allgegenwärtig: Datenbanken, APIs, Logs, Dateisysteme… Dennoch werden sie oft missverstanden und sind Quelle subtiler Bugs im Zusammenhang mit Zeitzonen.

Was bedeutet 1735689600? Ohne ein Tool unmöglich zu wissen. Und Zeitzonen-Konvertierungsfehler können kritische Probleme verursachen: verschobene Events, beschädigte Daten oder schlimmer noch, fehlerhafte Finanztransaktionen.

Unser Timestamp-Konverter ist ein kostenloses Online-Epoch-Tool, das Ihnen ermöglicht, sofort zwischen Timestamps und lesbaren Daten zu konvertieren. In diesem Artikel meistern Sie Unix-Timestamps ein für alle Mal und vermeiden häufige Fallstricke.

Was ist ein Unix-Timestamp?

Ein Unix-Timestamp repräsentiert einen präzisen Zeitpunkt als eine einzige Zahl: die Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00:00 UTC.

Dieses Referenzdatum wird Unix-Epoch oder POSIX-Epoch genannt.

Konkrete Beispiele

TimestampEntsprechendes Datum
01. Januar 1970 00:00:00 UTC
10000000009. September 2001 01:46:40 UTC
16094592001. Januar 2021 00:00:00 UTC
17356896001. Januar 2025 00:00:00 UTC

Testen Sie mit unserem Timestamp-Konverter!

Warum Timestamps verwenden?

1. Universalität

Ein Timestamp ist unabhängig von der Zeitzone. Der Timestamp 1609459200 repräsentiert denselben Zeitpunkt überall auf der Welt, ob Sie in Paris, New York oder Tokio sind.

2. Speichereinfachheit

Eine einfache Ganzzahl ist leichter und schneller zu verarbeiten als eine formatierte Datumszeichenkette:

// Kompakt und effizient
1609459200

// Schwerer
"2021-01-01T00:00:00.000Z"

3. Vereinfachte Berechnungen

Zeitliche Operationen werden zu einfachen Additionen/Subtraktionen:

const jetzt = Math.floor(Date.now() / 1000);
const inDreiTagen = jetzt + (3 * 24 * 60 * 60);
const vorEinerStunde = jetzt - 3600;

4. Natürliche Sortierung

Timestamps sortieren sich natürlich in chronologischer Reihenfolge:

events.sort((a, b) => a.timestamp - b.timestamp);

5. Einfache Vergleiche

if (expirationTimestamp < Date.now() / 1000) {
  console.log("Das Token ist abgelaufen");
}

Sekunden vs. Millisekunden

Die klassische Falle

Der Unterschied in der Präzision zwischen Sekunden und Millisekunden ist Quelle zahlreicher Bugs.

FormatLängeBeispielwert
Sekunden (Unix)10 Ziffern1735689600
Millisekunden (JS)13 Ziffern1735689600000

JavaScript verwendet Millisekunden

// Date.now() gibt Millisekunden zurück
Date.now(); // 1735689600000

// new Date() erwartet Millisekunden
new Date(1735689600000); // ✅ Korrekt
new Date(1735689600);    // ❌ 18. Januar 1970!

Konvertierung zwischen Formaten

// Sekunden → Millisekunden
const ms = timestamp * 1000;

// Millisekunden → Sekunden
const sec = Math.floor(Date.now() / 1000);

Unser Timestamp-Konverter erkennt automatisch das Eingabeformat.

Praktische Konvertierungen

JavaScript

// Aktueller Timestamp (Sekunden)
const now = Math.floor(Date.now() / 1000);

// Datum → Timestamp
const timestamp = Math.floor(new Date("2025-01-01").getTime() / 1000);

// Timestamp → Datum
const date = new Date(timestamp * 1000);

// Lesbare Formatierung
date.toISOString();      // "2025-01-01T00:00:00.000Z"
date.toLocaleDateString('de-DE'); // "01.01.2025"

Python

import time
from datetime import datetime

# Aktueller Timestamp
now = int(time.time())

# Datum → Timestamp
dt = datetime(2025, 1, 1)
timestamp = int(dt.timestamp())

# Timestamp → Datum
date = datetime.fromtimestamp(timestamp)

# Formatierung
date.strftime("%d.%m.%Y %H:%M:%S")  # "01.01.2025 00:00:00"

PHP

// Aktueller Timestamp
$now = time();

// Datum → Timestamp
$timestamp = strtotime("2025-01-01");

// Timestamp → Datum
$date = date("d.m.Y H:i:s", $timestamp);

// Mit DateTime
$dt = new DateTime("@$timestamp");

SQL

-- MySQL
SELECT UNIX_TIMESTAMP(NOW());
SELECT FROM_UNIXTIME(1735689600);

-- PostgreSQL
SELECT EXTRACT(EPOCH FROM NOW());
SELECT TO_TIMESTAMP(1735689600);

-- SQLite
SELECT strftime('%s', 'now');
SELECT datetime(1735689600, 'unixepoch');

Das Jahr-2038-Problem

Die Grenze von 32-Bit-Systemen

Vorzeichenbehaftete 32-Bit-Ganzzahlen können Werte bis 2.147.483.647 speichern. Dieses Maximum wird am 19. Januar 2038 um 03:14:07 UTC erreicht.

Nach diesem Datum wird der Timestamp auf nicht aktualisierten Systemen “überlaufen” und negativ, wodurch das Datum auf… 1901 zurückgesetzt wird.

Moderne Lösungen

LösungBeschreibung
64-Bit-GanzzahlenGrenze verschoben auf 292 Milliarden Jahre
Millisekunden-Timestamps64-Bit standardmäßig in JavaScript
Moderne BibliothekenLuxon, Day.js, date-fns verwenden sichere Formate

Moderne Systeme (64-Bit Linux, 64-Bit Windows, macOS) sind im Allgemeinen vorbereitet.

Zeitzonen und häufige Fallstricke

Der Timestamp ist IMMER in UTC

Dies ist der wichtigste Punkt. Ein Timestamp hat keine Zeitzone – er repräsentiert einen absoluten Zeitpunkt.

Fallstrick 1: Datumserstellung ohne Zeitzone

// ⚠️ In lokaler Zeit des Browsers/Servers interpretiert
new Date("2025-01-01")  // Kann den 31. Dezember 2024 23:00 UTC ergeben!

// ✅ Explizit UTC angeben
new Date("2025-01-01T00:00:00Z")

Fallstrick 2: Datumsvergleich zwischen Zeitzonen

// Ein Nutzer in Paris und einer in New York sehen "01.01.2025"
// Aber ihre lokalen Timestamps sind unterschiedlich!

// ✅ Immer in UTC speichern und vergleichen
const startOfDay = new Date("2025-01-01T00:00:00Z").getTime() / 1000;

Fallstrick 3: Sommerzeit (DST)

Bei Zeitumstellungen existieren bestimmte lokale Zeiten nicht oder zweimal:

// Am 26. März 2025, Umstellung auf Sommerzeit in Deutschland
// 02:30 wird zu 03:30 → 02:30 existiert nicht!

Lösung: Immer in UTC speichern und manipulieren. Nur für die Anzeige konvertieren.

Timestamps in APIs

Best Practices

  1. Format dokumentieren: Sekunden oder Millisekunden?
  2. ISO 8601 für Lesbarkeit verwenden: 2025-01-01T12:00:00Z
  3. Beide unterstützen: Timestamps und ISO-Daten als Eingabe akzeptieren
  4. UTC zurückgeben: Keine spezifische Zeitzone

Beispiel API-Antwort

{
  "created_at": 1735689600,
  "created_at_iso": "2025-01-01T00:00:00Z",
  "timezone": "UTC"
}

Timestamps und Datenbanken

Empfohlene Typen

DatenbankEmpfohlener Typ
PostgreSQLTIMESTAMPTZ (timestamp with time zone)
MySQLDATETIME oder TIMESTAMP
SQLiteINTEGER (Unix-Timestamp) oder TEXT (ISO 8601)
MongoDBDate (in Millisekunden gespeichert)

PostgreSQL-Beispiel

CREATE TABLE events (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255),
    event_time TIMESTAMPTZ DEFAULT NOW()
);

-- Abfrage nach Zeitraum
SELECT * FROM events
WHERE event_time BETWEEN
    TO_TIMESTAMP(1735689600) AND
    TO_TIMESTAMP(1735776000);

Timestamp-Debugging

Format erkennen

Anzahl ZiffernWahrscheinliches Format
10Unix-Sekunden
13JavaScript-Millisekunden
16Mikrosekunden
19Nanosekunden

Schnelle Überprüfung

Unser Timestamp-Konverter:

  • Erkennt automatisch das Format
  • Zeigt das Datum in mehreren Zeitzonen an
  • Ermöglicht Konvertierung in beide Richtungen

Ergänzende Tools

Für effizientes Arbeiten mit Daten und Zeit:

Fazit

Unix-Timestamps sind scheinbar einfach, aber voller Feinheiten. Die wichtigsten Punkte:

  1. Nur UTC: Der Timestamp hat keine Zeitzone
  2. Achtung Millisekunden: 10 oder 13 Ziffern macht den ganzen Unterschied
  3. Bei Anzeige konvertieren: In UTC speichern, in lokaler Zeit anzeigen
  4. Auf 2038 vorbereiten: 64-Bit-Ganzzahlen verwenden

Müssen Sie schnell einen Timestamp konvertieren? Unser Timestamp-Konverter hilft Ihnen!