2015-08-02 5 views
0

У меня есть дата в формате 2015-08-02 07:06:46.022111+00:00. Когда я использую strptime() на этом с форматом "%Y-%m-%d %H:%M:%S.%f" У меня есть ошибка 'ValueError unconverted data remains: +00:00'. Есть ли способ включить часть +00:00 в строку формата?Ошибка значения strptime Python

+0

Пожалуйста, покажите полный код, который вызвал ошибку. Вы можете получить ответ без него, но он по крайней мере дает людям начало. Благодарю. –

+1

вы уверены, что заканчивается на '+00: 00'? Случается, что это заканчивается '+ 0000' вместо этого? – ozgur

+1

Кажется, что вам не хватает часовой пояс, '% z'. Однако вам может потребоваться удалить двоеточие, чтобы оно работало. редактирование: или это как @ozgur предполагает. –

ответ

1

Мне очень нравится модуль python-dateutil. При этом модуль синтаксического анализа datetime так же просто, как:

>>> from dateutil import parser 
>>> parser.parse('2015-08-02 07:06:46.022111+00:00') 
datetime.datetime(2015, 8, 2, 7, 6, 46, 22111, tzinfo=tzutc()) 

Вы можете установить его с pip:

pip install python-dateutil 
+0

Да, 'dateutil', по-видимому, является предпочтительным способом преобразования отформатированных дат ISO 8601 обратно в объекты' datetime'. См. Http://stackoverflow.com/questions/969285/how-do-i-translate-a-iso-8601-datetime-string-into-a-python-datetime-object – lemonhead

0

Вы можете использовать нарезку, чтобы избавиться от толстой кишки и добавить %z также указать часовой пояс:

import datetime 
timestring = '2015-08-02 07:06:46.022111+00:00' 
timestring = timestring[:len(timestring)-3]+timestring[len(timestring)-2:] 
dtformat = '%Y-%m-%d %H:%M:%S.%f%z' 
dt = datetime.datetime.strptime(timestring, dtformat) 

dt тогда:

datetime.datetime(2015, 8, 2, 7, 6, 46, 22111, tzinfo=datetime.timezone.utc) 
Смежные вопросы