Environnement: Python-3.5
L'heure Python est créée avec le fuseau horaire à l'esprit. Une note sur la façon de gérer les fuseaux horaires. Le fuseau horaire naïf est le moment où le fuseau horaire n'est pas conscient, et le fuseau horaire conscient est le moment où le fuseau horaire est conscient.
from datetime import datetime,timezone
import pytz
naive = datetime.now()
aware = datetime.now(timezone.utc)
Passer timezone
comme argument de timezone # now
crée une heure actuelle tenant compte du fuseau horaire.
Les deux ne peuvent être comparés.
naive > awre
# TypeError: can't compare offset-naive and offset-aware datetimes
Une exception est levée.
Lors de la création d'une heure arbitraire, passez le fuseau horaire comme argument comme suit.
naive = datetime(2016,6,1,12,0,0,0)
aware = datetime(2016,6,1,12,0,0,0,timezone.utc)
Utilisez datetime # astimezone
si vous souhaitez passer à un fuseau horaire local.
Bien sûr, l'heure naïve du fuseau horaire ne peut pas être utilisée.
print(naive.astimezone())
# ValueError: astimezone() cannot be applied to a naive datetime
print(aware.astimezone())
# 2016-06-01 21:00:00+09:00
Il est pratique d'utiliser pytz
lorsque vous utilisez votre fuseau horaire préféré.
timezone-Change une heure naïve au fuseau horaire spécifié.
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
timezone-Change le fuseau horaire de l'heure consciente. Cela ne change pas l'heure réelle.
print(aware.astimezone(jp))
# 2016-06-01 21:00:00+09:00
print(aware.astimezone(de))
# 2016-06-01 14:00:00+02:00
Vous pouvez remplacer le fuseau horaire par datetime # replace
. Naturellement, le temps d'expression changera.
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