Pytz и т.д / GMT-5 - PullRequest
       65

Pytz и т.д / GMT-5

6 голосов
/ 24 октября 2010

У меня проблемы с пониманием преобразования между часовым поясом "Etc / GMT-5" и UTC в pytz.

>>> dt = datetime(2009, 9, 9, 10, 0) # September 9 2009, 10:00
>>> gmt_5 = pytz.timezone("Etc/GMT-5")
>>> gmt_5.localize(dt)
datetime.datetime(2009, 9, 9, 10, 0, tzinfo=<StaticTzInfo 'Etc/GMT-5'>)

Пока все в порядке, но затем я пытаюсь преобразовать это в UTC:

>>> gmt_5.localize(dt).astimezone(pytz.utc)
datetime.datetime(2009, 9, 9, 5, 0, tzinfo=<UTC>)

Так что мне кажется, что при переходе с 10:00 по GMT-5 на UTC я получаю 05:00?Я ожидаю, что Pytz даст мне 15:00 вместо этого.

Что мне не хватает?

РЕДАКТИРОВАТЬ: Я подтвердил, что преобразование часового пояса для часового пояса США / восточного работаеткак я и ожидал:

>>> eastern = pytz.timezone("US/Eastern")
>>> eastern.localize(dt)
datetime.datetime(2009, 9, 9, 10, 0, tzinfo=...) # Too long
>>> pytz.utc.normalize(eastern.localize(dt).astimezone(pytz.utc))
datetime.datetime(2009, 9, 9, 14, 0, tzinfo=<UTC>)

РЕДАКТИРОВАТЬ 2: Я подтвердил, что когда я использую Etc / GMT + 5, я получаю 15:00, что я и ожидалполучить от Etc / GMT-5.Это ошибка Pytz?

Ответы [ 2 ]

12 голосов
/ 24 октября 2010

Это явно POSIX.From Wikipedia :

Чтобы соответствовать стилю POSIX, в этих зонах, начинающихся с «Etc / GMT», знак противоположен тому, что ожидает большинство людей.В этом стиле зоны к западу от GMT имеют положительный знак, а зоны к востоку - отрицательный.

0 голосов
/ 24 октября 2010

Этот отчет об ошибке объясняет это поведение.Очевидно, они знают, что все это перевернуто, но это потому, что что-то еще может нарушить совместимость.

...