2016-03-16 2 views
0

Я пытаюсь преобразовать строку даты и времени, такую ​​как «15 марта 2016 10:47:15» в объект datetime Python, используя strptime. Я считаю, что у меня есть форматирование правильно, однако я все еще получаю исключение ValueError когда я бегу ниже:Преобразование читаемой даты и времени в объект datetime в Python

>>> s = "Mar 15, 2016 10:47:15" 
>>> datetime.datetime.strptime(s,"%b %m, %Y %H:%M:%S") 
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 'Mar 15, 2016 10:47:15' does not match format '%b %m, %Y %H:%M:%S' 

Любые идеи относительно того, что может быть не так с моей строки формата?

ответ

1

Второй элемент в строке формата (%m) относится к месяцу. Изменение его на %d сделает ваш код работать.

datetime.datetime.strptime(s,"%b %d, %Y %H:%M:%S") 

Вот соответствующие части из strptime documentation:

% d День месяца как дополненные нулей десятичного числа. 01, 02, ..., 31

% m Месяц в виде десятичного числа с нулевым запасом. 01, 02, ..., 12

+0

Ух, не могу поверить, я пропустил это! ура –

0

Название месяца определяется по языку. Если вы хотите использовать английские месячные имена, установленные для приложения на английском языке, например, en_US.

$ env LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 python 
    >>> import datetime 
    >>> s = "Mar 15, 2016 10:47:15" 
    >>> datetime.datetime.strptime(s,"%b %d, %Y %H:%M:%S") 
    datetime.datetime(2016, 3, 15, 10, 47, 15) 

P.S. %m заменен на %d, что означает день.

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