Heim >Backend-Entwicklung >Python-Tutorial >Warum weist pytz Asien/Hong_Kong einen 7-Stunden- und 37-Minuten-Versatz zu?

Warum weist pytz Asien/Hong_Kong einen 7-Stunden- und 37-Minuten-Versatz zu?

Susan Sarandon
Susan SarandonOriginal
2024-12-07 20:17:15246Durchsuche

Why Does pytz Assign a 7-Hour, 37-Minute Offset to Asia/Hong_Kong?

Pytz Timezone Enigma: Das 7-Stunden-Offset-Rätsel lüften

Im Bereich der Zeitzonenverwaltung übernimmt Pytz oft die Führung. Einige Benutzer sind jedoch bei der Arbeit mit der Zeitzone „Asien/Hong_Kong“ auf eine unerwartete Anomalie gestoßen: Warum weist pytz ihr einen ungewöhnlichen Versatz von 7 Stunden und 37 Minuten zu?

Weitere Untersuchungen bringen interessante Beobachtungen zutage:

import pytz
pytz.timezone('Asia/Hong_Kong')
# Outputs: <DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>

Seltsamerweise scheint dieser Offset nicht korrekt zu sein. Der folgende Codeausschnitt deckt jedoch eine verwirrendere Diskrepanz auf:

import pytz
from datetime import datetime
hk = pytz.timezone('Asia/Hong_Kong')

dt1 = datetime(2012,1,1,tzinfo=hk)
dt2 = hk.localize(datetime(2012,1,1))
if dt1 > dt2:
   print "Why?"

Dieser Code gibt überraschenderweise „Warum?“ aus und deutet damit an, dass dt1 größer als dt2 ist. Was könnte die Ursache für diese eigenartigen Verhaltensweisen sein?

Das Rätsel entschlüsseln: Eine historische Wendung

Um dieses Zeitzonenrätsel zu lösen, ist eine sorgfältige Untersuchung der Zeitzonengeschichte erforderlich. Die von pytz extrahierte Standardzeitzone und der Offset basieren auf den frühesten bekannten Aufzeichnungen, die manchmal von den aktuellen Normen abweichen können. Bei der Lokalisierung über „localize“ werden der richtige Zeitzonenname und der richtige Zeitzonen-Offset zugewiesen.

Im Fall von „Asien/Hong_Kong“ betrug der früheste aufgezeichnete Offset tatsächlich 7 Stunden und 37 Minuten (LMT 7:37:00). . Dieser Offset wurde jedoch inzwischen geändert. Das einfache Initialisieren eines Datetime-Objekts mit den Zeitzoneninformationen (dt1) ermöglicht keine automatische Anpassung.

Beheben des anormalen Verhaltens:

Um diese Diskrepanz zu beheben, wird empfohlen sich auf die Methode „localize“ zu verlassen, um den Datetime-Objekten korrekt Zeitzoneninformationen zuzuweisen. Durch die explizite Verwendung von „localize“ stellt pytz die Verwendung des entsprechenden Zeitzonennamens und -versatzes sicher, der die aktuellen Zeitnehmungskonventionen widerspiegelt.

Das obige ist der detaillierte Inhalt vonWarum weist pytz Asien/Hong_Kong einen 7-Stunden- und 37-Minuten-Versatz zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn