🕐
← ZurĂŒck zu Anleitungen

Unix-Zeitstempel-Zeitzonenkonvertierung: Ein praktischer Leitfaden

· Tags: timezone, dst, utc, time-conversion, unix-timestamp, daylight-saving, epoch

Warum die Zeitzone fĂŒr Unix-Zeitstempel wichtig ist

Unix-Zeitstempel selbst sind zeitzonenunabhĂ€ngig — die Zahl 1785292800 bedeutet ĂŒberall denselben Augenblick. Die KomplexitĂ€t entsteht, wenn dieser Augenblick fĂŒr Anzeige, Protokollierung oder Datenanalyse in eine menschenlesbare lokale Zeit konvertiert wird.

Das Kernprinzip: immer in UTC speichern, nur fĂŒr die Anzeige konvertieren. Diese Regel eliminiert ganze Kategorien von Fehlern und macht Ihre Daten ĂŒber Zeitzonen hinweg portabel.

UTC vs. lokale Zeit: Den Unterschied verstehen

UTC (koordinierte Weltzeit)

UTC ist der primĂ€re Zeitstandard. Er Ă€ndert sich nie wegen der Sommerzeit und ist ĂŒberall auf der Erde gleich. Unix-Zeitstempel sind in UTC definiert.

Lokale Zeit

Lokale Zeit ist UTC, angepasst an eine bestimmte geografische Region. Sie kann sich von UTC durch einen festen Offset unterscheiden (z. B. UTC+8 fĂŒr die China Standard Time) oder durch einen variablen Offset (z. B. wechselt die Eastern Time fĂŒr DST zwischen UTC-5 und UTC-4).

Das Offset-Problem

Derselbe Unix-Zeitstempel erzeugt je nach Standort des Betrachters unterschiedliche lokale Zeiten:

| Zeitstempel | UTC | New York (EST) | Tokio (JST) | London (BST) | |-----------|-----|----------------|-------------|--------------| | 1785292800 | 2026-07-19 00:00 | 2026-07-18 20:00 | 2026-07-19 09:00 | 2026-07-19 01:00 | | 1785379200 | 2026-07-19 23:59 | 2026-07-19 19:59 | 2026-07-20 08:59 | 2026-07-20 00:59 |

Sommerzeit (DST)

Was ist DST?

Die Sommerzeit (Daylight Saving Time) ist die Praxis, Uhren in den Sommermonaten vorzustellen, damit das Abendlicht lĂ€nger anhĂ€lt. Im FrĂŒhling werden die Uhren „vorgestellt" (verlieren eine Stunde), und im Herbst „zurĂŒckgestellt" (gewinnen eine Stunde).

Die Auswirkung auf die Zeitstempelkonvertierung

DST erzeugt einen variablen Offset zwischen lokaler Zeit und UTC. Das bedeutet:

  1. Dieselbe lokale Zeit kann zwei verschiedenen Zeitstempeln entsprechen (beim „ZurĂŒckstellen" tritt die Stunde 1:00 Uhr zweimal auf)
  2. Einige lokale Zeiten existieren nicht (beim „Vorstellen", z. B. findet 2:00 Uhr nie statt — die Uhren springen direkt auf 3:00 Uhr)

Beispiel: Die mehrdeutige Stunde

In der Zeitzone Eastern Time der USA stellen die Uhren am ersten Sonntag im November um 2:00 Uhr auf 1:00 Uhr zurĂŒck. Das bedeutet:

from datetime import datetime, timezone
import pytz

eastern = pytz.timezone("America/New_York")

# First occurrence of 1:00 AM (EDT, UTC-4)
first = eastern.localize(datetime(2026, 11, 1, 1, 0), is_dst=True)
print(first.timestamp())
# Some timestamp value

# Second occurrence of 1:00 AM (EST, UTC-5) = 3600 seconds later!
second = eastern.localize(datetime(2026, 11, 1, 1, 0), is_dst=False)
print(second.timestamp())
# first.timestamp() + 3600

Behandeln Sie die mehrdeutige RĂŒckstell-Stunde in Ihren Anwendungen immer sorgfĂ€ltig. Die Verwendung von is_dst/ambiguous-Flags in Python oder gleichwertigen Optionen in anderen Sprachen verhindert subtile Fehler.

ZeitzonenĂŒbergreifende Konvertierung

Verwendung unseres Online-Tools

Der einfachste Ansatz fĂŒr einmalige Konvertierungen ist unser Unix-Zeitstempel-Konverter, der Ergebnisse gleichzeitig in mehreren Zeitzonen anzeigt.

Verwendung der Linux-Kommandozeile

# Display timestamp in multiple timezones
TZ="America/New_York" date -d @1785292800
TZ="Europe/London"    date -d @1785292800
TZ="Asia/Tokyo"       date -d @1785292800

# With custom ISO format
TZ="UTC" date -d @1785292800 +"%Y-%m-%d %H:%M:%S %Z"
# Output: 2026-07-19 00:00:00 UTC

TZ="Asia/Shanghai" date -d @1785292800 +"%Y-%m-%d %H:%M:%S %Z"
# Output: 2026-07-19 08:00:00 CST

Verwendung von Python

from datetime import datetime
from zoneinfo import ZoneInfo  # Python 3.9+

ts = 1785292800

# Convert to multiple timezones
timezones = ["America/New_York", "Europe/London", "Asia/Tokyo", "Australia/Sydney"]

for tz_name in timezones:
    tz = ZoneInfo(tz_name)
    dt = datetime.fromtimestamp(ts, tz=tz)
    print(f"{tz_name}: {dt.strftime('%Y-%m-%d %H:%M:%S %Z')}")

Verwendung von JavaScript

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

const timezones = [
    "America/New_York",
    "Europe/London",
    "Asia/Tokyo",
    "Australia/Sydney"
];

for (const tz of timezones) {
    const str = date.toLocaleString("en-US", {
        timeZone: tz,
        timeZoneName: "short",
    });
    console.log(`${tz}: ${str}`);
}

Verwendung von Go

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Unix(1785292800, 0)
    
    timezones := []string{
        "America/New_York",
        "Europe/London",
        "Asia/Tokyo",
        "Australia/Sydney",
    }
    
    for _, tz := range timezones {
        loc, _ := time.LoadLocation(tz)
        fmt.Printf("%s: %s\n", tz, t.In(loc).Format("2006-01-02 15:04:05"))
    }
}

HĂ€ufige Zeitzonenkonvertierungs-Muster

Konvertieren von Server-Logs in lokale Zeit

Server-Logs zeichnen Zeitstempel ĂŒblicherweise in UTC auf. Bei der Analyse konvertieren Sie in Ihre lokale Zeitzone:

# Read a log file and display timestamps in Pacific time
while IFS= read -r line; do
    if [[ $line =~ ^([0-9]+) ]]; then
        ts="${BASH_REMATCH[1]}"
        TZ="America/Los_Angeles" date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
        echo " $line"
    fi
done < server.log

Planung zeitzonenĂŒbergreifender Ereignisse

Wenn Sie Ereigniszeiten ĂŒber Zeitzonen hinweg teilen, kommunizieren Sie immer in UTC oder teilen Sie den Unix-Zeitstempel direkt mit. Das beseitigt Mehrdeutigkeiten:

  • „Treffen um 1785292800" ist eindeutig
  • „Treffen um 9:00 Uhr EST" wird wĂ€hrend DST-ÜbergĂ€ngen mehrdeutig
  • „Treffen um 9:00 Uhr America/New_York" ist besser, erfordert aber trotzdem die Kenntnis des DST-Status

Speichern von Zeitstempeln in Datenbanken

-- Always store the timestamp itself (timezone-independent)
INSERT INTO events (occurred_at, user_id) VALUES (1785292800, 42);

-- OR store with an explicit UTC timestamp column
INSERT INTO events (occurred_at_utc, user_id) 
VALUES ('2026-07-19 00:00:00+00', 42);

Zusammenfassung der Best Practices

  1. In UTC speichern, fĂŒr die Anzeige konvertieren — Speichern Sie lokale Zeit niemals in Datenbanken
  2. IANA-Zeitzonennamen verwenden (z. B. America/New_York) anstelle von AbkĂŒrzungen (EST, PST) — AbkĂŒrzungen sind mehrdeutig und berĂŒcksichtigen DST nicht
  3. DST explizit behandeln — Verwenden Sie zeitzonenbewusste Bibliotheken; addieren/subtrahieren Sie Stunden niemals manuell
  4. Zeitzoneninformationen immer ĂŒbergeben — Wenn Sie Daten von Benutzern annehmen, erfassen Sie die Zeitzone, nicht nur den Offset
  5. Grenzdatum testen — Testen Sie Ihre Konvertierungslogik an DST-Übergangsdaten (sowohl FrĂŒhling als auch Herbst), um Fehler frĂŒh zu erkennen

Zeitzonendatenbank

Die Zeitzonendaten Ihres Systems stammen aus der IANA-Zeitzonendatenbank (auch Olson-Datenbank genannt), die mehrmals pro Jahr aktualisiert wird, wenn Regierungen DST-Regeln Àndern. Halten Sie Ihr System auf dem neuesten Stand:

# Debian / Ubuntu
sudo apt update && sudo apt install tzdata

# macOS
# Automatically updated via software updates

# Verify your database version
zdump -v /etc/localtime | head -1

Verwenden Sie unseren Unix-Zeitstempel-Konverter fĂŒr schnelle zeitzonenbewusste Konvertierungen ĂŒber alle wichtigen Zeitzonen hinweg.

Unix-Zeitstempel-Zeitzonenkonvertierung: Ein praktischer Leitfaden - CoolTool