Konvertieren Sie JSON-Datumsstring in Python datetime

Bei der Übersetzung von Daten zu JSON, Javascript spart Datum in diesem Format:

2012-05-29T19:30:03.283Z 

Allerdings bin ich mir nicht sicher, wie man das in ein python datetime Objekt bekommt. Ich habe diese versucht:

 # Throws an error because the 'Z' isn't accounted for: datetime.datetime.strptime(obj[key], '%Y-%m-%dT%H:%M:%S.%f') # Throws an error because '%Z' doesn't know what to do with the 'Z' # at the end of the string datetime.datetime.strptime(obj[key], '%Y-%m-%dT%H:%M:%S.%f%Z') 

Ich glaube, dass Javascript die Saite im offiziellen ISO-Format speichert, also scheint es, dass es einen Weg geben sollte, um datetime.strptime() zu lesen, um es zu lesen?

2 Solutions collect form web for “Konvertieren Sie JSON-Datumsstring in Python datetime”

Versuchen Sie folgendes Format:

 %Y-%m-%dT%H:%M:%S.%fZ 

Beispielsweise:

 >>> datetime.datetime.strptime('2012-05-29T19:30:03.283Z', '%Y-%m-%dT%H:%M:%S.%fZ') datetime.datetime(2012, 5, 29, 19, 30, 3, 283000) 

Das Z im Datum bedeutet nur, dass es als UTC-Zeit interpretiert werden sollte, also ignoriert es keinen Verlust von Informationen. Sie finden diese Informationen hier: http://www.w3.org/TR/NOTE-datetime

Um eine Alternative zu bieten, wenn es Ihnen nichts ausmacht, das python-dateutil Paket zu installieren, können Sie dateutil.parser.parse . Es wird darauf hingewiesen, dass das Format der Eingabe durch parse erraten wird; Eine ungültige Eingabe kann immer noch korrekt interpretiert werden.

Ohne zeitzone

Wenn Sie lieber nicht die Zeitzone gesetzt haben, was ganz gut ist, wenn Sie alle Zeiten intern nur als UTC darstellen, verwenden Sie:

 >>> dateutil.parser.parse('2012-05-29T19:30:03.283Z', ignoretz=True) datetime.datetime(2012, 5, 29, 19, 30, 3, 283000) 

Mit Zeitzone

Beachten Sie, dass im Gegensatz zu datetime.datetime.strptime dieser Standardaufruf zur parse automatisch die UTC-Zeitzone datetime.datetime.strptime .

 >>> import dateutil.parser >>> dateutil.parser.parse('2012-05-29T19:30:03.283Z') datetime.datetime(2012, 5, 29, 19, 30, 3, 283000, tzinfo=tzutc()) 

Wenn eine Test-Assertion für Gleichheit gemacht werden muss, kann das erwartete Objekt wie folgt konstruiert werden:

 >>> import datetime >>> datetime.datetime(2012, 5, 29, 19, 30, 3, 283000, tzinfo=dateutil.tz.tzutc()) 
  • Wie kann ich sicherstellen, dass mein Python-regulärer Ausdruck ein Wörterbuch ausgibt?
  • Mehrere Json Objekte in einer Datei extrahieren durch Python
  • Iterate durch ein Json-Feed in Python
  • Hübscher Druck JSON Python
  • Mit Python ein C-String-Literal von JSON zu erzeugen
  • _corrupt_record Fehler beim Lesen einer JSON-Datei in Spark
  • Auszug aus dynamischer JSON-Antwort mit Scrapy
  • Pickle oder Json?
  • Was ist das Problem mit Python bei der Verarbeitung meiner JSON-Datei?
  • Decodieren json wörterbuch mit python
  • Wie bekomme ich String-Objekte anstelle von Unicode von JSON?
  • Python ist die beste Programmiersprache der Welt.