Zeitzonen mit zoneinfo
Mit zeitzonenbewussten Datumszeiten arbeiten
Zeitzonen mit zoneinfo ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Naive und aware Datetimes
Ein naives datetime-Objekt enthält keine Zeitzoneninformationen – es sagt lediglich „14 Uhr“, ohne erkennen zu lassen, welche 14 Uhr gemeint ist. Ein aware datetime-Objekt enthält eine Zeitzone und bezeichnet dadurch weltweit einen exakt bestimmten Zeitpunkt.
Aware datetime-Objekte verhindern Fehler, wenn Benutzer sich in verschiedenen Regionen befinden.
from datetime import datetime
naive = datetime(2026, 5, 30, 14, 0)
print(naive.tzinfo)zoneinfo importieren
Python 3.9 und höher enthält zoneinfo in der Standardbibliothek. Importieren Sie ZoneInfo und übergeben Sie einen IANA-Zeitzonennamen wie 'Europe/Istanbul' oder 'America/New_York'.
from zoneinfo import ZoneInfo
tz = ZoneInfo('Europe/Istanbul')
print(tz)Ein aware datetime-Objekt erstellen
Übergeben Sie beim Erstellen eines datetime-Objekts tzinfo=ZoneInfo(...), um es aware zu machen. Nun weiß es genau, zu welcher Region es gehört.
from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print(d)
print(d.tzinfo)UTC als Bezugspunkt
UTC ist der universelle Bezugspunkt. Verwenden Sie datetime.now(ZoneInfo('UTC')), um die aktuelle aware-UTC-Zeit abzurufen. Zeiten in UTC zu speichern, gilt als Best Practice.
from datetime import datetime
from zoneinfo import ZoneInfo
utc_now = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
print(utc_now)Zwischen Zeitzonen umrechnen
.astimezone(tz) wandelt ein aware datetime-Objekt in eine andere Zeitzone um und passt die Uhrzeit so an, dass weiterhin derselbe Zeitpunkt bezeichnet wird.
from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
ist = utc.astimezone(ZoneInfo('Europe/Istanbul'))
print('UTC:', utc)
print('Istanbul:', ist)Gleicher Zeitpunkt, andere Uhrzeiten
Nach der Umrechnung unterscheiden sich die angezeigten Uhrzeiten, aber der zugrunde liegende Zeitpunkt ist identisch. Beim Vergleichen zweier aware datetime-Objekte werden die tatsächlichen Zeitpunkte verglichen, nicht die angezeigten Ziffern.
from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
ny = utc.astimezone(ZoneInfo('America/New_York'))
print(utc == ny)UTC-Offset auslesen
Die Methode .utcoffset() gibt ein timedelta zurück, das angibt, wie weit die Zeitzone zu diesem Zeitpunkt von UTC abweicht – einschließlich einer eventuellen Anpassung an die Sommerzeit.
from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print('Offset:', d.utcoffset())Sommerzeit wird automatisch berücksichtigt
zoneinfo verwendet die Systemdatenbank für Zeitzonen und weiß daher, wann die Sommerzeit beginnt und endet. Dieselbe Zeitzone kann im Jahresverlauf unterschiedliche Offsets haben.
from datetime import datetime
from zoneinfo import ZoneInfo
winter = datetime(2026, 1, 15, 12, 0, tzinfo=ZoneInfo('America/New_York'))
summer = datetime(2026, 7, 15, 12, 0, tzinfo=ZoneInfo('America/New_York'))
print('Winter:', winter.utcoffset())
print('Summer:', summer.utcoffset())Einer naiven Uhrzeit eine Zeitzone zuweisen
Wenn ein naives datetime-Objekt eine bekannte lokale Uhrzeit darstellt, weisen Sie ihm mit .replace(tzinfo=...) eine Zeitzone zu. Dadurch wird die Zeitzone vermerkt, ohne die Uhrzeit zu verschieben.
from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 5, 30, 9, 0)
aware = naive.replace(tzinfo=ZoneInfo('Europe/Istanbul'))
print(aware)Naive und aware Datetimes nicht mischen
Sie können ein naives datetime-Objekt nicht von einem aware datetime-Objekt subtrahieren oder die beiden miteinander vergleichen – Python löst einen TypeError aus. Verwenden Sie in einem Programm durchgehend konsistente datetime-Objekte.
from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 5, 30, 9, 0)
aware = datetime(2026, 5, 30, 9, 0, tzinfo=ZoneInfo('UTC'))
try:
print(aware - naive)
except TypeError as e:
print('Error:', e)Mit Zeitzone formatieren
Der Code %Z gibt beim Formatieren eines aware datetime-Objekts den Namen der Zeitzone aus, und %z gibt den numerischen Offset aus.
from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print(d.strftime('%Y-%m-%d %H:%M %Z %z'))Kurztest
Was ist der wesentliche Unterschied zwischen einem naiven und einem aware datetime-Objekt?
Zusammenfassung: Zeitzonen mit zoneinfo
Zusammenfassung:
- Naive datetime-Objekte enthalten keine Zeitzoneninformationen; aware datetime-Objekte enthalten
tzinfo. - Verwenden Sie
ZoneInfo('Region/City')aus dem Modulzoneinfo. .astimezone()wandelt ein aware datetime-Objekt in eine andere Zeitzone um.zoneinfobehandelt die Sommerzeit automatisch. Naive und aware datetime-Objekte sollten Sie niemals mischen.
from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 12, 0, tzinfo=ZoneInfo('UTC'))
print(utc.astimezone(ZoneInfo('Europe/Istanbul')))Häufig gestellte Fragen
Ist die Lektion „Zeitzonen mit zoneinfo“ kostenlos?
Ja — der vollständige Text von „Zeitzonen mit zoneinfo“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Zeitzonen mit zoneinfo“?
Mit zeitzonenbewussten Datumszeiten arbeiten Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Zeitzonen mit zoneinfo“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- date, time, datetime
- Timedelta und Arithmetik
- Formatierung und Parsing
- Zeitzonen mit zoneinfo