2016-10-14 2 views
1

ich eine Liste von Datetime-Datenfolgen haben, die wie folgt aussieht:Konvertieren benutzerdefinierte Strings in Datetime-Format

list = ["2016-08-02T09:20:32.456Z", "2016-07-03T09:22:35.129Z"] 

Ich möchte konvertieren dies zum Beispiel Format (für den ersten Punkt):

"8/2/2016 9:20:32 AM" 

ich versuchte dies:

from datetime import datetime 
for time in list: 
    date = datetime.strptime(time, '%Y %m %d %I %R') 

Aber gibt Fehler:

ValueError: 'R' is a bad directive in format '%Y %m %d %I %R'

Danke für jede Hilfe!

+0

Das von Ihnen verwendete Datumsformat stimmt nicht mit den Elementen Ihrer Liste überein. Und was soll '% R' bedeuten? –

+0

Es soll die Zeit in 24 Stunden Dauer bedeuten: https://www.tutorialspoint.com/python/time_strptime.htm – Litwos

+0

Seltsam, es erscheint nicht in der offiziellen Dokumentation: https://docs.python.org/3.0/ library/datetime.html # id1 –

Antwort

1

Sie haben mehrere Probleme in Sie Code:

  • %R kein correct directive zu sein scheint (das Ihr Fehler ist, ich glaube, Sie suchen %p).
  • das Format in strptime ist das Format Ihrer Eingabe, nicht die Ausgabe
  • Sie list und time als Name Variable verwenden, was schlecht ist;]

So könnte man für Sie zum ersten Mal konvertieren auf ein korrektes Datetime-Objekt:

>>> t='2016-08-02T09:20:32.456Z' 
>>> d=datetime.strptime(t, "%Y-%m-%dT%H:%M:%S.%fZ") 
>>> d 
datetime.datetime(2016, 8, 2, 9, 20, 32, 456000) 

Und dann in einen String mit strftime

>>> datetime.strftime(d, "%m/%d/%Y %I:%M:%S %p") 
'08/02/2016 09:20:32 AM' 
dieses Objekt konvertieren
+0

Danke für die bessere Antwort und Erklärungen! – Litwos

Verwandte Themen