Поддержка формата ISO8601 в модуле Python Datetime - PullRequest
0 голосов
/ 19 октября 2018

Я прочитал очень много вопросов о разборе ISO8601 в python, но большинство из них используют внешние зависимости.Затем я столкнулся с этим вопросом:

Как разобрать дату в формате ISO 8601?

Это объясняет, что python не поддерживает форматирование iso8601, но отвечает3 года.

Мне нужно проанализировать эту дату без использования внешних зависимостей,

from datetime import datetime
app_login = "1996-12-19T16:39:57+08:00"
parse_app_login = datetime.strptime(x,"%Y-%m-%dT%H:%M:%S%z")
print(parse_app_login)

Я получаю сообщение об ошибке:

ValueError: time data '1996-12-19T16:39:57+08:00' does not match format '%Y-%m-%dT%H:%M:%S%z'

Я хочу знать, почемуpython не поддерживает формат iso8601?

1 Ответ

0 голосов
/ 19 октября 2018

Обратите внимание, что Python 3.7 поддерживает ISO8601 формат смещений UTC,

из документов ,

Изменено в версии 3.7: Когда директива% z предоставляется методу strptime (), смещения UTC могут содержать двоеточие в качестве разделителя между часами, минутами и секундами.Например, «+01: 00: 00» будет обрабатываться как смещение в один час.Кроме того, предоставление «Z» идентично «+00: 00».

с использованием Python 3.7.0 (v3.7.0: 1bf9cc5093, 27 июня 2018, 04:06:47),

>>> from datetime import datetime
>>> x = "2018-10-18T16:39:57+08:00"
>>> y = datetime.strptime(x,"%Y-%m-%dT%H:%M:%S%z")
>>> print(y)

Выход,

2018-10-18 16:39:57+08:00
...