wird angenommen, dass ich eine Zeitzone weniger datetime
bezwecken:Assign Zeitzone zu einem Python-Datetime
import datetime
import pytz
fmt = "%Y-%m-%d %H:%M:%S %Z%z"
dtUnaware = datetime.datetime(1979,2,20,6)
print(dtUnaware.strftime(fmt))
Dies ergibt:
1979-02-20 06:00:00
So weit, so gut. Jetzt möchte ich diesem Objekt eine Zeitzone zuweisen. Es scheint, als könnte ich entweder datetime.replace
oder pytz.localize
verwenden.
Erstens:
dtAware1 = dtUnaware.replace(tzinfo=pytz.timezone('Asia/Jerusalem'))
print(dtAware1.strftime(fmt))
kehrt: 1979-02-20 06:00:00 LMT+0221
. Zweitens:
dtAware2 = pytz.timezone('Asia/Jerusalem').localize(dtUnaware, is_dst=None)
print(dtAware2.strftime(fmt))
gibt 1979-02-20 06:00:00 IST+0200
zurück.
Was ist los mit der ersten Methode? Es scheint eine falsche Zeitzone zuzuweisen. Mache ich etwas falsch?
eine gute Erklärung. Es kann sein, dass der Parameter localize() '' 'is_dst" erwähnt wird, der mehrdeutige und nicht existierende lokale Zeiten behandelt. Auch 'normalize()' Methode könnte nach 'localize()' für nicht existente lokale Zeit verwendet werden. – jfs