2010-10-25 2 views
9

Я хотел бы преобразовать эту строку в объект даты и времени:конвертировать строку даты и времени объекта

Wed Oct 20 16:35:44 +0000 2010 

Есть простой способ сделать это? Или мне нужно написать RE для анализа элементов, конвертировать Oct в 10 и так далее?

EDIT: strptime - большой. Однако, с

datetime.strptime(date_str, "%a %b %d %H:%M:%S %z %Y") 

Я получаю

ValueError: 'z' is a bad directive in format '%a %b %d %H:%M:%S %z %Y' 

даже если% г кажется правильным.

EDIT2: Тег% z, похоже, не поддерживается. См. http://bugs.python.org/issue6641. Я обошел его, используя объект timedelta, чтобы соответствующим образом изменить время.

ответ

2

В зависимости от того, где эта строка возникает, вы можете использовать datetime.strptime, чтобы ее проанализировать. Единственная проблема заключается в том, что strptime полагается на некоторые специфические для платформы вещи, поэтому, если эта строка должна быть способна поступать из произвольных других систем, а все дни и месяцы не определяются точно так же (июнь или июнь), вы можете есть проблемы.

+0

не уверен, что он разделяет часовой пояс –

28

Нет RE требуется. Попробуйте это:

from dateutil import parser 

yourDate = parser.parse(yourString) 

для "Ср окт 20 16:35:44 +0000 2010" возвращает datetime.datetime(2010, 10, 20, 16, 35, 44, tzinfo=tzutc())

+2

dateutil не в стандартной библиотеке. Это PyPI, хотя, так работает 'pip install python-dateutil '. Лицензия PSF. –

+0

Отлично! apt-get install python-dateutil – Andy

2

Я уверен, что вы в состоянии сделать это с помощью datetime.strptime.

Из документов:

datetime.strptime (DATE_STRING, формат)

Вернуть даты и времени, соответствующий DATE_STRING, анализируется в соответствии с форматом . Это эквивалентно datetime (* (time.strptime (date_string, )) [0: 6])). ValueError добавляется , если date_string и формат не могут быть проанализированы time.strptime() или если оно возвращает значение, которое не является временем кортеж.

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