почему дата-время Python не работает {Date} 2016-11-22T11: 49: 21.826-05: 00, даже если формат совпадает - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь отформатировать дату и время в Python 3.6 следующим образом:

datetime.datetime.strptime(date_string, "{Date}%Y-%m-%dT%H:%M:%S.%f%z")

Однако форматирование не удается выполнить для входной строки {Date}2016-11-22T11:49:21.826-05:00 с ошибкой ниже.

Traceback (most recent call last):   File "./test-date.py", line 168, in get_date
  date_time_ = datetime.datetime.strptime(date_string, "{Date}%Y-%m-%dT%H:%M:%S.%f%z").replace(tzinfo=None)   
File "/usr/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
  tt, fraction = _strptime(data_string, format)   
File "/usr/lib/python3.6/_strptime.py", line 362, in _strptime
  (data_string, format))
ValueError: time data '{Date}2016-11-22T11:49:21.826-05:00' does not match format '{Date}%Y-%m-%dT%H:%M:%S.%f%z'

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Потому что правильный способ кормления %z - это что-то вроде -0500, а не -05:00.

>>> datetime.datetime.strptime('2016-11-22T11:49:21.826-0500', "%Y-%m-%dT%H:%M:%S.%f%z")
datetime.datetime(2016, 11, 22, 11, 49, 21, 826000, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400)))
0 голосов
/ 28 февраля 2019

Если вы не возражаете против использования дополнительного пакета Python с именем dateutil, вы можете сделать следующее:

from dateutil.parser import parse
ds = '2016-11-22T11:49:21.826-05:00'
print(parse(ds))

Вывод:

datetime.datetime(2016, 11, 22, 11, 49, 21, 826000, tzinfo=tzoffset(None, -18000))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...