Какие возможные значения datetime.strptime () принимает для% Z? - PullRequest
10 голосов
/ 20 августа 2009

Python datetime.strptime () задокументирован как поддерживающий часовой пояс в поле% Z. Так, например:

In [1]: datetime.strptime('2009-08-19 14:20:36 UTC', "%Y-%m-%d %H:%M:%S %Z")
Out[1]: datetime.datetime(2009, 8, 19, 14, 20, 36)

Тем не менее, «UTC», похоже, является единственным часовым поясом, который я могу поддержать:

In [2]: datetime.strptime('2009-08-19 14:20:36 EDT', "%Y-%m-%d %H:%M:%S %Z")
ValueError: time data '2009-08-19 14:20:36 EDT' does not match format '%Y-%m-%d %H:%M:%S %Z'

In [3]: datetime.strptime('2009-08-19 14:20:36 America/Phoenix', "%Y-%m-%d %H:%M:%S %Z")
ValueError: time data '2009-08-19 14:20:36 America/Phoenix' does not match format '%Y-%m-%d %H:%M:%S %Z'

In [4]: datetime.strptime('2009-08-19 14:20:36 -0700', "%Y-%m-%d %H:%M:%S %Z")
ValueError: time data '2009-08-19 14:20:36 -0700' does not match format '%Y-%m-%d %H:%M:%S %Z'

Какой формат ожидается для% Z? Или как мне представить часовой пояс, отличный от UTC?

Ответы [ 2 ]

9 голосов
/ 20 августа 2009

Я понимаю, что это GMT, UTC и все, что указано в time.tzname.

>>> for t in time.tzname:
...     print t
...
Eastern Standard Time
Eastern Daylight Time
>>> datetime.strptime('2009-08-19 14:20:36 Eastern Standard Time', "%Y-%m-%d %H:%M:%S %Z")
datetime.datetime(2009, 8, 19, 14, 20, 36)
>>> datetime.strptime('2009-08-19 14:20:36 UTC', "%Y-%m-%d %H:%M:%S %Z")
datetime.datetime(2009, 8, 19, 14, 20, 36)
>>> datetime.strptime('2009-08-19 14:20:36 GMT', "%Y-%m-%d %H:%M:%S %Z")
datetime.datetime(2009, 8, 19, 14, 20, 36)

Разумеется, эти настройки зависят от конкретной машины, и, скорее всего, ваши будут другими.

4 голосов
/ 20 августа 2009

Это из модуля time, но я почти уверен, что это относится к datetime:

Поддержка директивы% Z основана на значениях, содержащихся в tzname и правда ли дневной свет. Потому что это, это зависит от платформы, за исключением для распознавания UTC и GMT, которые всегда известны (и считаются часовые пояса не для летнего времени).

https://docs.python.org/library/time.html

В моей системе:

>>> import time
>>> time.tzname
('PST', 'PDT')

Использование чего-либо, кроме этого, в datetime.strptime приводит к исключению. Итак, посмотрите, что у вас есть на вашем компьютере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...