Umgebung: Python-3.5
Die Python-Zeit wird unter Berücksichtigung der Zeitzone erstellt. Ein Hinweis zum Umgang mit Zeitzonen. Die Zeitzone-naiv ist die Zeit, in der die Zeitzone nicht bewusst ist, und die Zeitzone-bewusst ist die Zeit, in der die Zeitzone bewusst ist.
from datetime import datetime,timezone
import pytz
naive = datetime.now()
aware = datetime.now(timezone.utc)
Wenn Sie "Zeitzone" als Argument für "Zeitzone # jetzt" übergeben, wird eine zeitzonenbezogene aktuelle Zeit erstellt. Die beiden können nicht verglichen werden.
naive > awre
# TypeError: can't compare offset-naive and offset-aware datetimes
Eine Ausnahme wird ausgelöst.
Übergeben Sie beim Erstellen einer beliebigen Zeit die Zeitzone als Argument wie folgt.
naive = datetime(2016,6,1,12,0,0,0)
aware = datetime(2016,6,1,12,0,0,0,timezone.utc)
Verwenden Sie "datetime # astimezone", wenn Sie zu einer lokalen Zeitzone wechseln möchten. Natürlich kann keine zeitzonennaive Zeit verwendet werden.
print(naive.astimezone())
# ValueError: astimezone() cannot be applied to a naive datetime
print(aware.astimezone())
# 2016-06-01 21:00:00+09:00
Es ist praktisch, "pytz" zu verwenden, wenn Sie Ihre bevorzugte Zeitzone verwenden. Zeitzone - Ändert eine naive Zeit in die angegebene Zeitzone.
import pytz
de = pytz.timezone('Europe/Berlin')
print(de.localize(naive))
# 2016-06-01 12:00:00+02:00
jp = pytz.timezone('Asia/Tokyo')
print(jp.localize(naive))
# 2016-06-01 12:00:00+09:00
Zeitzone - Ändert die Zeitzone der bewussten Zeit. Dies ändert nichts an der tatsächlichen Zeit.
print(aware.astimezone(jp))
# 2016-06-01 21:00:00+09:00
print(aware.astimezone(de))
# 2016-06-01 14:00:00+02:00
Sie können die Zeitzone mit "datetime # replace" überschreiben. Natürlich wird sich die Zeit zum Ausdrücken ändern.
print(aware.replace(tzinfo=jp).astimezone(timezone.utc))
# 2016-06-01 03:00:00+00:00
print(aware.replace(tzinfo=de).astimezone(timezone.utc))
# 2016-06-01 11:07:00+00:00
Recommended Posts