Heim >Backend-Entwicklung >Python-Tutorial >Warum weist pytz Asien/Hong_Kong einen 7-Stunden- und 37-Minuten-Versatz zu?
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!