Какие возможные значения принимает datetime.strptime() для% Z?
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?
Ответы
Ответ 1
Я понимаю, что они 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)
Эти настройки зависят от машины, конечно, и ваши будут по-разному по-другому.
Ответ 2
Это из модуля time
, но я почти уверен, что он относится к datetime
:
Поддержка директивы% Z основана на на значения, содержащиеся в tzname и является ли дневной свет истинным. Из-за это, это зависит от платформы, за исключением для признания UTC и GMT, которые всегда известны (и считаются не связанные с летним временем).
https://docs.python.org/library/time.html
В моей системе:
>>> import time
>>> time.tzname
('PST', 'PDT')
Использование ничего, кроме данных в datetime.strptime, приводит к исключению. Итак, посмотрите, что у вас есть на вашей машине.