2014-01-16 4 views
12

Ich versuche, ein Unicode-Objekt in ein Datetime-Objekt zu konvertieren.Convert Unicode zu datetime richtigen Strptime Format

ich durch die Dokumentation zu lesen: http://docs.python.org/2/library/time.html#time.strptime

und

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

versucht, aber ich erhalte die Meldung Fehler auf ValueError: time data '2014-01-15T01:35:30.314Z' does not match format '%Y-%m-%dT%H:%M:%SZ'

Jedes Feedback, was das richtige Format ist?

Ich schätze die Zeit und das Know-how.

+0

Sie die falsche Dokumentation zu lesen. Während "time.strptime" und "datetime.datetime.strptime" offensichtlich _ähnliche_ Funktionen sind, sind sie (wie bei 2.6+) völlig separat implementiert und haben unterschiedliche Listen, warum sie damit umgehen können. ('time' ruft einfach die C-Bibliothek Ihrer Plattform auf;' datetime' handhabt zusätzliche Format-Direktiven, selbst wenn Ihre Plattform dies nicht tut.) – abarnert

Antwort

25

Sie die Mikrosekunden analysieren kann:

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

Ich dachte, 'datetime' handle'% f' manuell, wenn die Plattform nicht nur existiert hinzugefügt in 3.1+, aber es sieht so aus, als wäre es auch auf 2.6 zurückportiert worden. Nett. – abarnert

9

Eine Option ist dateutil die Arbeit machen zu lassen:

>>> from dateutil import parser 
>>> parser.parse('2014-01-15T01:35:30.314Z') 
datetime.datetime(2014, 1, 15, 1, 35, 30, 314000, tzinfo=tzutc())