web-dev-qa-db-fra.com

Conversion DateTime et TimeZone avec Pytz-Mind Comportement soufflant

J'essaie de convertir le fuseau horaire datetime objet à l'UTC, puis de retour à son fuseau horaire original. J'ai un extrait suivant

t = datetime(
    2013, 11, 22, hour=11, minute=0,
    tzinfo=pytz.timezone('Europe/Warsaw')
)

maintenant à Ipython:

In [18]: t
Out[18]: datetime.datetime(
    2013, 11, 22, 11, 0, tzinfo=<DstTzInfo 'Europe/Warsaw' WMT+1:24:00 STD>
)

et maintenant essayons de faire la conversion en UTC et à l'arrière. Je m'attendrais à avoir la même représentation que:

In [19]: t.astimezone(pytz.utc).astimezone(pytz.timezone('Europe/Warsaw'))
Out[19]: datetime.datetime(
    2013, 11, 22, 10, 36, tzinfo=<DstTzInfo 'Europe/Warsaw' CET+1:00:00 STD>
)

Pourtant, nous voyons que Out[18] et Out[19] différer. Ce qui se passe?

23
yakxxx

La documentation http://pytz.sourceforge.net/ états "Malheureusement, à l'aide de l'argument tzinfo des constructeurs DateTime standard" ne fonctionne pas "avec Pytz pour de nombreuses foiszones". Le code:

t = datetime(
    2013, 5, 11, hour=11, minute=0,
    tzinfo=pytz.timezone('Europe/Warsaw')
)

ne fonctionne pas selon cela, vous devez plutôt utiliser la méthode localize:

t = pytz.timezone('Europe/Warsaw').localize(
        datetime(2013, 5, 11, hour=11, minute=0))
51
James K