Frage

Ich lese das nicht so vollständig Pytz -Dokumentation Und ich stecke fest, einen Teil davon zu verstehen.

Die Konvertierung zwischen Zeitzonen erfordert auch besondere Aufmerksamkeit. Dies muss auch die Normalisierungsmethode verwenden, um sicherzustellen, dass die Konvertierung korrekt ist.

>>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899))
>>> utc_dt.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> au_tz = timezone('Australia/Sydney')
>>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz))
>>> au_dt.strftime(fmt)
'2006-03-27 08:34:59 EST+1100'
>>> utc_dt2 = utc.normalize(au_dt.astimezone(utc))
>>> utc_dt2.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'

Ich habe dieses Beispiel versucht ohne Verwendung normalize Und es stellte sich genauso heraus. Meiner Meinung nach erklärt sich dieses Beispiel nicht wirklich warum Wir müssen verwenden normalize Beim Konvertieren zwischen datetime Objekte in verschiedenen Zeitzonen.

Würde mir jemand bitte eine geben Beispiel (wie das oben genannte), bei dem das Ergebnis unterscheidet, wenn sie nicht verwendet werden normalize.

Vielen Dank

War es hilfreich?

Lösung

Aus der PYTZ -Dokumentation:

Wenn Sie die Datum Arithmetik in lokalen Zeiten durchführen, die DST-Grenzen überschreiten, können die Ergebnisse möglicherweise in einer falschen Zeitzone liegen (dh 1 Minute von 2002-10-27 1:00 EST und Sie erhalten 2002-10-27 0: 59 EST anstelle der richtigen 2002-10-27 1:59 EDT). Eine Normalize () -Methode wird bereitgestellt, um dies zu korrigieren. Leider können diese Probleme nicht behoben werden, ohne die Python DateTime -Implementierung zu ändern.

Andere Tipps

Die Dokumente sagen, dass Normalisierung als Problemumgehung für DST -Probleme verwendet wird:

Wenn Sie die Datum Arithmetik in lokalen Zeiten durchführen, die DST-Grenzen überschreiten, können die Ergebnisse möglicherweise in einer falschen Zeitzone liegen (dh 1 Minute von 2002-10-27 1:00 EST und Sie erhalten 2002-10-27 0: 59 EST anstelle der richtigen 2002-10-27 1:59 EDT). Eine Normalize () -Methode wird bereitgestellt, um dies zu korrigieren.

Es wird also verwendet, um einige Kantenfälle mit DST zu korrigieren. Wenn Sie keine DST -TimeZones (z. B. UTC) verwenden, ist es nicht erforderlich, Normalisierung zu verwenden.

Wenn Sie es nicht verwenden, kann Ihre Konvertierung möglicherweise unter bestimmten Umständen eine Stunde frei sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top