Zeitzonendiskrepanzen mit pytz
Bei der Verwendung der pytz-Bibliothek können scheinbar seltsame Zeitzonenversätze auftreten, wie z. B. die sieben Stunden und 37 Minutenversatz für „Asien/Hong_Kong“. Diese Ungleichheit ergibt sich aus der dynamischen Natur von Zeitzonen und ihren zeitlichen Verschiebungen.
Der von pytz beim Erstellen eines Zeitzonenobjekts bereitgestellte Standardzonenname und -versatz stellt die frühesten verfügbaren Informationen für diese Zone dar. Diese Werte können ungewöhnlich erscheinen. Um dieses Problem zu beheben, verwenden Sie die Lokalisierungsmethode, um die Zone einem bestimmten Datum zuzuordnen. Dadurch wird sichergestellt, dass der richtige Zonenname und Offset verwendet werden.
Betrachten Sie als Beispiel den folgenden Code:
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?"
In diesem Fall ist der Vergleich zwischen „dt1“ und „dt2“ kann aufgrund der oben genannten Offset-Diskrepanz zu unerwarteten Ergebnissen führen. Um den korrekten Vergleich zu erhalten, sollte man immer die Methode „localize“ verwenden, um die Zeitzone an das Datum anzuhängen, anstatt den datetime-Konstruktor zu verwenden, der möglicherweise nicht die erforderlichen Anpassungen vornimmt.
Das obige ist der detaillierte Inhalt vonWarum zeigt pytz unerwartete Zeitzonenverschiebungen an und wie kann ich damit richtig umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!