2016-05-10 28 views
0

Ich erhalte einen JSON, der Zeitdaten ausdruckt 2016-04-15T02: 19: 17 + 00: 00 'Ich kann das Format dieser Unicode-Zeichenfolge nicht herausfinden.Wie finde ich das Datumsformat?

Ich muss einen Unterschied in der Zeit zwischen damals und jetzt finden. Der erste Schritt, dass die Zeichenfolge strukturiertes Format und Iam nicht in der Lage zu konvertieren das Format

fmt='"%Y-%m-%d %H:%M:%S %Z' 
#fmt='%Y-%m-%d %H:%M:%S.%f' 
print datetime.datetime.strptime(result_json['alert_time'], fmt) 

I Ausnahme erhalten immer zu finden, dass es nicht das gleiche Format ist

time data '2016-04-15T02:19:17+00:00' does not match format '"%Y-%m-%d %H:%M:%S %Z' 

Antwort

1

Es gibt ein paar Probleme mit Ihrem Format. Erstens hat es ein Doppelzitat " drin. Zweitens müssen Sie die T zwischen dem Datum und der Uhrzeit einfügen. Drittens ist der Zeitzonen-Offset nicht Standard. Hier ist Code, der funktioniert:

print datetime.datetime.strptime('2016-04-15T02:19:17', '%Y-%m-%dT%H:%M:%S') 

Wenn Ihr alert_time immer in GMT ist, können Sie einfach die Zeitzone abschneiden, bevor strptime aufrufen.

+0

Ich bekomme immer: unkonvertierte Daten bleibt: +00: 00. Gibt es eine anmutige Möglichkeit, die Ausnahme loszuwerden? – Victor

+0

@Victor: "trim die Zeitzone vor dem Aufruf von' strptime'. " –

0

Die Antwort von Brent ist die sicherere und schnellere Option, anstatt Dinge unter der Haube laufen zu lassen. Aber die Anzahl der Male, die ich datetime als einen frustrierenden Engpass hatte nicht mit dem Hauptproblem, das ich testen wollte verbunden, werde ich auch darauf hinweisen, dass dateparserhere ist noch nicht falsch für mich und wird eine riesige Auswahl an Eingaben.

import dateparser 
import datetime 

date = '2016-04-15T02:19:17+00:00' 

date_parser_format = dateparser.parse(date) 
datetime_format = datetime.datetime.strptime('2016-04-15T02:19:17', '%Y-%m-%dT%H:%M:%S') 

print date_parser_format 
print datetime_format 
Verwandte Themen