2014-01-16 5 views
12

Я пытаюсь преобразовать объект unicode в объект datetime.Преобразование unicode в формат datetime собственного strptime

Я прочитал документацию: http://docs.python.org/2/library/time.html#time.strptime

и попытался

datetime.strptime(date_posted, '%Y-%m-%dT%H:%M:%SZ') 

, но я получаю сообщение об ошибке ValueError: time data '2014-01-15T01:35:30.314Z' does not match format '%Y-%m-%dT%H:%M:%SZ'

Любая обратная связь о том, что это правильный формат?

Я ценю время и знания.

+0

Вы читаете неправильную документацию. Хотя 'time.strptime' и' datetime.datetime.strptime', очевидно, являются _символьными_ функциями, они (как и 2.6+) реализованы полностью отдельно и имеют разные списки того, почему они могут обрабатывать. ('time' просто вызывает библиотеку C вашей платформы,' datetime' вручную обрабатывает директивы дополнительного формата, даже если ваша платформа не делает этого.) – abarnert

ответ

25

Вы можете разобрать микросекунд:

from datetime import datetime 
date_posted = '2014-01-15T01:35:30.314Z' 
datetime.strptime(date_posted, '%Y-%m-%dT%H:%M:%S.%fZ') 
+0

Я думал, что сделать 'datetime' handle'% f' вручную, если платформа не была добавлено в 3.1+, но похоже, что он был также включен в версию 2.6. Ницца. – abarnert

9

Один из вариантов, чтобы dateutil сделать работу:

>>> from dateutil import parser 
>>> parser.parse('2014-01-15T01:35:30.314Z') 
datetime.datetime(2014, 1, 15, 1, 35, 30, 314000, tzinfo=tzutc()) 
Смежные вопросы