2013-11-07 17 views
0

Я не могу понять, почему эта строка даты вызывает ошибку, когда я пытаюсь преобразовать ее в объект datetime.Как преобразовать эту строку даты в объект даты даты?

Мой струна в standard ISO-8601 format: u'2013-11-05T20:24:51+0000'

Кажущаяся формат на основе языка Python strptime documentation: '%Y-%m-%dT%H:%M:%S%Z'

Но по какой-то причине, когда я бегу:

test = datetime.strptime('2013-11-05T20:24:51+0000', '%Y-%m-%dT%H:%M:%S%Z') 

Я получаю

ValueError: time data '2013-11-05T20:24:51+0000' does not match format '%Y-%m-%dT%H:%M:%S%Z'` 
+1

Если вы сделаете это часто и не любит писать strptime выражения, как я, попробуйте http://labix.org/python -dateutil –

+0

Yep - определенно дубликат. Когда я изначально поставил вопрос, я не понимал, что это в формате ISO 8601, так что вопрос не появлялся, когда я искал. Не стесняйтесь закрывать/сливать или что здесь уместно. –

ответ

2

%Z - неправильная директива здесь.

Попробуйте

datetime.strptime('2013-11-05T20:24:51+0000', '%Y-%m-%dT%H:%M:%S+%f') 

More here

Demo:

>>> from datetime import datetime 
>>> datetime.strptime('2013-11-05T20:24:51+0000', '%Y-%m-%dT%H:%M:%S%Z') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime 
    (data_string, format)) 
ValueError: time data '2013-11-05T20:24:51+0000' does not match format '%Y-%m-%dT%H:%M:%S%Z' 
>>> datetime.strptime('2013-11-05T20:24:51+0000', '%Y-%m-%dT%H:%M:%S+%f') 
datetime.datetime(2013, 11, 5, 20, 24, 51) 
+0

Хорошо, что '% Z' ошибочно. Хотя это не '% f' - это совершенно другое значение, оно должно быть фактически'% z'. –

+0

@JeffWidman True, но '% z' дает:' ValueError: 'z' является плохой директивой в формате '% z'' –

+0

Weird. Согласно документам,% z должен работать ... любая идея, почему это не так? –

Смежные вопросы