Je ne souhaite pas utiliser la bibliothèque pytz
car le projet sur lequel je travaille nécessite des documents pour introduire des dépendances. Si je peux y arriver sans une bibliothèque tierce, je serai plus heureux.Comment convertir un objet datetime entre les fuseaux horaires CEST et UTC
Je rencontre des problèmes lors de la conversion d'une date entre CET et UTC lorsque la date est en heure d'été. Il est une heure différente de ce que je pense:
>>> print from_cet_to_utc(year=2017, month=7, day=24, hour=10, minute=30)
2017-07-24T09:30Z
2017-07-24T08:30Z # expected
CET est une heure d'avance sur UTC et en été est de 2 heures à l'avance. Donc, je m'attendais à 10h30 en Europe centrale en plein été à 8h30 UTC.
La fonction est:
from datetime import datetime, tzinfo, timedelta
def from_cet_to_utc(year, month, day, hour, minute):
cet = datetime(year, month, day, hour, minute, tzinfo=CET())
utc = cet.astimezone(tz=UTC())
return '{:%Y-%m-%d:T%H:%MZ}'.format(utc)
J'utilise deux informations fuseau horaire objets:
class CET(tzinfo):
def utcoffset(self, dt):
return timedelta(hours=1)
def dst(self, dt):
return timedelta(hours=2)
class UTC(tzinfo):
def utcoffset(self, dt):
return timedelta(0)
def dst(self, dt):
return timedelta(0)
Juste pour répondre à votre question sur les mises à jour de pytz, elles sont générées à partir des versions de l'IANA. IANA 2017b => pytz 2017.2. Stuart Bishop les maintient, et les publie à pypi ici: https://pypi.python.org/pypi/pytz#downloads –
@MattJohnson J'ai mis à jour la réponse avec cette info, merci beaucoup! –
Vos réponses et celles de Sergey ont été très utiles. Je pense que vous avez fait le plus pour me convaincre que je devrais laisser le soin aux experts. Notre solution consiste à utiliser l'heure UTC comme entrée, puis aucune conversion n'est requise de notre part (c: –