2017-02-02 11 views
0

Я получаю следующее сообщение об ошибке:питон: ошибка значение - timedate Ошибка формата

ValueError: time data 'Feb 1, 2017 0:03 pm' does not match format '%b %d, %Y %I:%M %p' 

Вот код:

from datetime import datetime 

latest_datetime = 'Feb 1, 2017 0:03 pm'  
datetime_obj = datetime.strptime(latest_datetime, "%b %d, %Y %I:%M %p") 

Я не могу понять, почему я получаю сообщение об ошибке.

ответ

2

12-часовой режим не имеет 0 час; %I соответствует только от 1 до 12. Вашей метки имеет невозможное время в нем:

0:03 pm 

От strftime() and strptime() Behavior documentation:

%I
Hour (12-hour clock) as a zero-padded decimal number.
01, 02, ..., 12

Допуская 0 действительно 12, вы можете исправить это путем замены ' 0:' с '12:' (обратите внимание на начальное пространство для нуля!):

>>> from datetime import datetime 
>>> latest_datetime = 'Feb 1, 2017 0:03 pm' 
>>> datetime.strptime(latest_datetime.replace(' 0:', '12:'), "%b %d, %Y %I:%M %p") 
datetime.datetime(2017, 2, 1, 12, 3) 

На самом деле не имеет значения, есть ли у вас одно или два пробела между годом и часом, строка будет разбираться в любом случае.

+0

Вы правы, я сделал неудачную диагностическую игру на консоли. –