alltools.one
Development‱
2025-07-05
‱
7 min
‱
alltools.one Team
UnixTimestampEpochTime ZoneDate

Unix-Zeitstempel erklÀrt: Umrechnung und hÀufige Fallstricke

Ein Unix-Zeitstempel ist eines der einfachsten und zugleich am meisten missverstandenen Konzepte in der Programmierung. Es ist die Anzahl der Sekunden, die seit dem 1. Januar 1970, 00:00:00 UTC vergangen sind — ein Moment, der als Unix-Epoch bekannt ist. Trotz seiner Einfachheit sind Zeitstempel eine Quelle von Fehlern im Zusammenhang mit Zeitzonen, PrĂ€zision und Überlauf.

Was ist die Unix-Epoch?

Die Unix-Epoch — 1. Januar 1970, 00:00:00 UTC — wurde als Startpunkt fĂŒr Unix-Zeit gewĂ€hlt. Jeder Zeitstempel wird relativ zu diesem Moment gemessen:

ZeitstempelDatum und Uhrzeit (UTC)
01. Jan. 1970 00:00:00
864002. Jan. 1970 00:00:00
10000000009. Sep. 2001 01:46:40
170000000014. Nov. 2023 22:13:20
200000000018. Mai 2033 03:33:20

Negative Zeitstempel stellen Daten vor der Epoch dar. Zum Beispiel ist -86400 der 31. Dezember 1969.

Rechnen Sie Zeitstempel sofort mit unserem Zeitstempel-Konverter um.

Sekunden vs. Millisekunden

Dies ist die hÀufigste Quelle von Verwirrung. Verschiedene Systeme verwenden unterschiedliche PrÀzisionen:

SystemPrÀzisionBeispiel
Unix/POSIXSekunden1700000000
JavaScriptMillisekunden1700000000000
Java (System.currentTimeMillis)Millisekunden1700000000000
Python (time.time)Sekunden (Float)1700000000.123
PostgreSQL (extract epoch)Sekunden (Float)1700000000.123456

Faustregel: Wenn die Zahl 13 Stellen hat, sind es Millisekunden. Bei 10 Stellen sind es Sekunden.

// JavaScript gibt Millisekunden zurĂŒck
const nowMs = Date.now();          // 1700000000000
const nowSec = Math.floor(nowMs / 1000);  // 1700000000

Zeitzonen-Behandlung

Unix-Zeitstempel sind immer UTC. Sie enthalten keine Zeitzoneninformation. Das ist tatsĂ€chlich ein Vorteil — es bietet einen universellen Referenzpunkt.

Die Verwirrung entsteht bei der Umrechnung von Zeitstempeln in lesbare Daten:

const ts = 1700000000;
const date = new Date(ts * 1000);

date.toUTCString();      // "Tue, 14 Nov 2023 22:13:20 GMT"
date.toLocaleString();    // AbhÀngig von der lokalen Zeitzone des Benutzers
date.toISOString();       // "2023-11-14T22:13:20.000Z"

Best Practice: Zeitstempel in UTC speichern und ĂŒbertragen. Nur auf der Darstellungsebene in lokale Zeit umrechnen, so nah am Benutzer wie möglich.

Das Jahr-2038-Problem

Traditionelle Unix-Systeme speichern Zeitstempel als vorzeichenbehaftete 32-Bit-Ganzzahl. Der Maximalwert ist 2.147.483.647, was dem 19. Januar 2038, 03:14:07 UTC entspricht.

Nach diesem Moment laufen 32-Bit-Zeitstempel in negative Werte ĂŒber und springen zurĂŒck zum 13. Dezember 1901. Dies ist analog zum Y2K-Bug.

Aktueller Stand:

  • Die meisten modernen Systeme verwenden 64-Bit-Zeitstempel (ausreichend bis zum Jahr 292 Milliarden)
  • Der Linux-Kernel ist seit Version 5.6 (2020) 64-Bit-Zeitstempel-kompatibel
  • Eingebettete Systeme und Legacy-Datenbanken sind weiterhin gefĂ€hrdet
  • Wenn Sie Software bauen, die Daten nach 2038 verarbeitet, ĂŒberprĂŒfen Sie Ihre Zeitstempel-Speicherung

Umrechnung in verschiedenen Sprachen

JavaScript

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

// Zeitstempel zu Date
const date = new Date(1700000000 * 1000);

// Date zu Zeitstempel
const ts = Math.floor(new Date('2023-11-14').getTime() / 1000);

Python

import time, datetime

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

# Zeitstempel zu datetime
dt = datetime.datetime.fromtimestamp(1700000000, tz=datetime.timezone.utc)

# Datetime zu Zeitstempel
ts = int(dt.timestamp())

SQL (PostgreSQL)

-- Aktueller Zeitstempel
SELECT EXTRACT(EPOCH FROM NOW());

-- Zeitstempel zu Datum
SELECT TO_TIMESTAMP(1700000000);

-- Datum zu Zeitstempel
SELECT EXTRACT(EPOCH FROM '2023-11-14'::timestamp);

HĂ€ufige Fallstricke

1. Sekunden und Millisekunden verwechseln

Wenn ein Datum als Januar 1970 angezeigt wird, haben Sie wahrscheinlich Sekunden ĂŒbergeben, wo Millisekunden erwartet wurden (oder umgekehrt). PrĂŒfen Sie immer, welche PrĂ€zision die API erwartet.

2. Zeitzonen in Datumszeichenketten ignorieren

Das Parsen von "2023-11-14" ohne Zeitzone erzeugt das Datum in der lokalen Zeitzone, die je nach Serverstandort variiert. Schließen Sie immer die Zeitzone ein: "2023-11-14T00:00:00Z".

3. Gleitkomma-PrÀzision

Beim Speichern von Zeitstempeln als Gleitkommazahlen können Sie PrĂ€zision jenseits von Millisekunden verlieren. FĂŒr Mikrosekunden- oder Nanosekunden-PrĂ€zision verwenden Sie Ganzzahlen mit dem entsprechenden Multiplikator.

4. Schaltsekunden

Unix-Zeitstempel berĂŒcksichtigen keine Schaltsekunden. Ein Unix-Tag ist immer genau 86.400 Sekunden, auch wenn tatsĂ€chliche UTC-Tage gelegentlich 86.401 Sekunden haben. FĂŒr die meisten Anwendungen ist dies irrelevant. FĂŒr wissenschaftliche oder Satellitenanwendungen verwenden Sie stattdessen TAI (Internationale Atomzeit).

ISO 8601: Die menschenlesbare Alternative

WĂ€hrend Zeitstempel großartig fĂŒr Berechnungen sind, ist ISO 8601 der Standard fĂŒr menschenlesbare Datumsdarstellung:

2023-11-14T22:13:20Z          # UTC
2023-11-14T17:13:20-05:00     # Eastern Time
2023-11-14                     # Nur Datum

Die meisten APIs sollten ISO-8601-Zeichenketten akzeptieren und zurĂŒckgeben. Verwenden Sie Zeitstempel intern fĂŒr Berechnungen und Speicherung.

FAQ

Warum beginnt die Unix-Zeit am 1. Januar 1970?

Das Datum wurde willkĂŒrlich gewĂ€hlt, als Unix in den frĂŒhen 1970er Jahren bei Bell Labs entwickelt wurde. Ein ausreichend aktuelles Datum war nötig, um keine Bits fĂŒr weit zurĂŒckliegende Daten zu verschwenden. Da 32-Bit-Ganzzahlen etwa 68 Jahre in jede Richtung speichern können, deckte der Start bei 1970 Daten von 1901 bis 2038 ab.

Sollte ich Daten als Zeitstempel oder formatierte Zeichenketten in meiner Datenbank speichern?

Speichern Sie Daten als Zeitstempel (Ganzzahl oder native Datetime-Typen) fĂŒr effizientes Sortieren, Vergleichen und Rechnen. Formatierte Zeichenketten sind schwerer abzufragen und korrekt zu sortieren. Die meisten Datenbanken haben native Datetime-Typen, die dies gut handhaben. Reservieren Sie die Zeichenkettenformatierung fĂŒr die Anzeige und API-Antworten.

Verwandte Ressourcen

Published on 2025-07-05
Unix Timestamps Explained: Conversion and Common Pitfalls | alltools.one