Sommerzeit erklärt: Wie DST Unix-Zeitstempel beeinflusst
Die Sommerzeit stellt die lokalen Uhren im Frühjahr vor und im Herbst zurück. Unix-Zeitstempel sind immun (sie zählen immer UTC), aber jede Umrechnung zwischen Unix-Zeit und lokaler Zeit muss wissen, ob die Sommerzeit aktiv ist. Dieser Leitfaden behandelt, was DST ist, wo es gilt, welche Lücken- und Überlappungs-Bugs es erzeugt und wie man es korrekt behandelt.
DST und Unix-Zeit in einer Minute
Die Sommerzeit stellt die lokalen Uhren im Frühjahr eine Stunde vor und im Herbst eine Stunde zurück. Ein Unix-Zeitstempel bewegt sich nie — er zählt UTC-Sekunden und tickt durch jede Umstellung gerade hindurch — der Zeitstempel ist also immun gegen DST. Was sich ändert, ist die lokale Zeit, die du dafür anzeigst. Zwei Umstellungen verursachen fast jeden DST-Bug: die Frühjahrslücke, in der eine Stunde lokaler Zeit nie passiert, und die Herbstüberlappung, in der eine Stunde zweimal passiert. Die Tabelle unten listet auf, wann die wichtigsten Regionen umstellen.
| Region | Frühjahrsumstellung | Herbstumstellung | Uhrumstellung |
|---|---|---|---|
| USA & Kanada | 2. Sonntag im März | 1. Sonntag im November | 02:00 → 03:00 lokal |
| Europäische Union | Letzter Sonntag im März | Letzter Sonntag im Oktober | 01:00 UTC, +1 Stunde |
| Vereinigtes Königreich | Letzter Sonntag im März | Letzter Sonntag im Oktober | GMT ↔ BST |
| Australien (Bundesstaaten mit DST) | 1. Sonntag im Oktober | 1. Sonntag im April | Südhalbkugel — umgekehrt |
Was ist die Sommerzeit?
Die Sommerzeit (DST) ist die Praxis, die lokalen Uhren während eines Teils des Jahres um eine Stunde vorzustellen, um das Abendlicht zu verlängern. Rund 70 Länder nutzen sie derzeit, meist in den gemäßigten Breiten. Die Umstellung ist eine Unstetigkeit in der Wanduhrzeit, nicht in UTC — Unix-Zeitstempel ticken durch jedes Vorstellen und Zurückstellen gleichmäßig weiter.
- Nordhalbkugel: Uhren gehen meist im März vor und im Oktober/November zurück
- Südhalbkugel: Uhren gehen im Oktober vor und im März/April zurück
- Tropische und äquatoriale Regionen nutzen im Allgemeinen keine Sommerzeit
- DST fügt dem Abend eine zusätzliche Stunde Tageslicht hinzu, ändert aber nicht die Gesamtmenge des Tageslichts
Wie DST-Umstellungen Unix-Zeitstempel beeinflussen
Ein Unix-Zeitstempel ist die Anzahl der seit 1970 UTC vergangenen Sekunden, er kann also nicht vorspringen oder sich wiederholen. Was sich ändert, ist die Interpretation dieser Sekunden in lokaler Zeit. Bei einer Frühjahrsumstellung springt die lokale Uhr von 02:00 auf 03:00 — die Wanduhr-Stunde von 02:00 bis 02:59 tritt lokal nie auf. Beim Zurückstellen passiert die lokale Uhr von 01:00 bis 01:59 zweimal, mit einer Stunde Abstand in UTC.
- Kein Unix-Zeitstempel wird durch DST je übersprungen oder dupliziert
- Ein gegebener Unix-Zeitstempel entspricht einer bestimmten lokalen Zeit, samt Offset (PDT vs. PST, BST vs. GMT usw.)
- Eine gegebene lokale Zeit kann null (DST-Lücke) oder zwei (DST-Überlappung) Unix-Zeitstempeln entsprechen
- Verwende IANA-Namen (America/Los_Angeles), damit DST für dich angewendet wird; verdrahte nie einen Offset wie UTC−8 fest, wenn der Ort DST nutzt
DST-Lücke und DST-Überlappung erklärt
Die beiden Umstellungen erzeugen die beiden klassischen DST-Bugs. Die Frühjahrslücke ist die häufigste Quelle von Planungs- und Erinnerungsfehlern — ein für 02:30 am Umstellungstag angesetztes Ereignis existiert lokal nicht. Die Herbstüberlappung ist die subtilere — ein Ereignis um 01:30 am Umstellungstag existiert zweimal, eine Stunde versetzt. Beide Fälle erfordern eine explizite Richtlinie.
| Umstellung | Uhr macht | Wirkung auf lokale Zeit |
|---|---|---|
| Vorstellen (Frühjahr) | 02:00 → 03:00 | 02:00–02:59 existiert nie (die "Lücke") |
| Zurückstellen (Herbst) | 02:00 → 01:00 | 01:00–01:59 tritt zweimal auf (die "Überlappung") |
- Lücke: ISO 8601 / RFC 3339 kann eine Zeit innerhalb der Lücke nicht eindeutig darstellen
- Überlappung: kennzeichne, welches Vorkommen, mit einem expliziten Offset (UTC−5 vs. UTC−4)
- Python: zoneinfo behandelt Lücke/Überlappung über das fold-Attribut (0 = erstes Vorkommen, 1 = zweites)
- JavaScript Temporal: ZonedDateTime nimmt eine Disambiguierungs-Option ("earlier", "later", "compatible", "reject")
- Cron um 02:30 in einer DST-Zone überspringt beim Vorstellen oder feuert beim Zurückstellen zweimal — wenn möglich in UTC planen
Welche Regionen nutzen DST
Die DST-Nutzung ist ein Flickenteppich und ändert sich regelmäßig — konsultiere immer die aktuellen IANA-tzdata, statt eine Regel fest zu verdrahten. Das Folgende ist für 2026 weitgehend korrekt.
- USA: die meisten Bundesstaaten nutzen DST (März–November). Arizona (außer der Navajo Nation) und Hawaii nicht
- Kanada: die meisten Provinzen nutzen DST. Saskatchewan, der größte Teil des Yukon und (seit 2026) der größte Teil von British Columbia nicht
- Europäische Union: nutzt DST (letzter Sonntag im März → letzter Sonntag im Oktober). Ein Votum von 2019 zur Abschaffung wurde aufgeschoben
- Vereinigtes Königreich: nutzt DST als BST (UTC+1) im Sommer
- Mexiko: schaffte 2022 die landesweite DST ab; nur an die USA angeglichene Grenzgemeinden nutzen sie noch
- Australien: nur NSW, Victoria, Tasmanien, ACT und South Australia nutzen DST (Oktober–April)
- Der Großteil Asiens, Afrikas und Südamerikas: keine DST
DST sicher im Code behandeln
Der zuverlässige Ansatz ist, alles auf Unix-Zeitstempeln (oder IANA-zonierten Datum-Zeit-Werten) zu verankern und lokale Zeit als Anzeigesache zu behandeln.
- Speichern: Unix-Epoch-Sekunden oder ein zeitzonenbewusstes datetime (z. B. TIMESTAMPTZ in Postgres)
- Rechnen: in UTC oder in IANA-bewussten Datum-Zeit-Bibliotheken (Temporal, zoneinfo, java.time)
- Anzeigen: zur Renderzeit in die IANA-Zeitzone des Nutzers konvertieren
- Planen: die IANA-Zeitzone neben der lokalen Wanduhr für wiederkehrende Ereignisse speichern, die bei "9 Uhr lokal" bleiben sollen
- Speichere nie die Abkürzung EDT/PDT/CET als Ersatz für den IANA-Namen
Der Vorstoß zur Abschaffung der DST
Mehrere Parlamente haben für die Abschaffung der halbjährlichen Zeitumstellung gestimmt; wenige dieser Voten haben zu tatsächlichen Politikänderungen geführt. Bemerkenswerte jüngste Aktivitäten:
- 2022: Der US-Senat verabschiedete einstimmig den Sunshine Protection Act, der im Repräsentantenhaus ins Stocken geriet
- 2022: Mexiko schaffte die landesweite DST ab
- 2024: Trump sprach sich öffentlich gegen die dauerhafte DST aus; die Dynamik im Senat verlangsamte sich
- 2026: British Columbia wurde dauerhaft UTC−7; der US-Ausschuss für Energie und Handel brachte neue DST-Abschaffungsformulierungen voran
- 2019: Die EU stimmte grundsätzlich für die Abschaffung der DST, hat die Umsetzung aber wiederholt verzögert
Verwandte Referenzen
FAQ
- Beeinflusst DST Unix-Zeitstempel?
- Nein. Unix-Zeitstempel zählen UTC-Sekunden seit 1970 und laufen durch jede DST-Umstellung gleichmäßig weiter. Nur die Interpretation dieser Sekunden in lokaler Zeit ändert sich.
- Was ist eine mehrdeutige Zeit?
- Eine mehrdeutige Zeit ist eine lokale Zeit, die zwei verschiedenen UTC-Zeitpunkten entspricht. Sie tritt bei der Herbstumstellung auf, wenn die Uhr von 02:00 auf 01:00 zurückgeht und die Stunde 01:00–01:59 zweimal vorkommt. Mache sie mit einem expliziten Offset oder der fold-/Disambiguierungs-Option einer Bibliothek eindeutig.
- Was passiert mit geplanten Jobs bei der DST-Umstellung?
- Ein Cron-Job in einer DST-Zone, geplant um 02:30, wird entweder übersprungen (Vorstellen) oder zweimal ausgeführt (Zurückstellen). Die Lösung ist, in UTC zu planen oder einen Scheduler zu nutzen, der explizit disambiguiert.
- Sollte man im Code "EST" oder "America/New_York" verwenden?
- America/New_York. Der IANA-Name wendet automatisch EST (UTC−5) im Winter und EDT (UTC−4) im Sommer an. Ein fest verdrahtetes "EST" bedeutet, dass Werte das halbe Jahr falsch sind.
- Wie behandle ich DST im Code korrekt?
- Speichere und rechne in UTC (oder mit IANA-zonierten Datum-Zeit-Werten) und konvertiere nur zur Anzeige in lokale Zeit. Verwende IANA-Zonennamen wie America/New_York, nie feste Offsets oder Abkürzungen wie EST, damit DST für dich angewendet wird.
- Wann beginnt und endet DST 2026?
- In den USA beginnt DST am 8. März 2026 um 02:00 Ortszeit (Vorstellen auf 03:00) und endet am 1. November 2026 um 02:00 Ortszeit (Zurückstellen auf 01:00). In der EU sind die Umstellungen am 29. März und 25. Oktober 2026.