Wie analysiert man Daten mit -0400 Zeitzonen-String in Python?
Ich habe ein Datum-string der form '2009/05/13 19:19:30 -0400'. Es scheint, dass die früheren Versionen von Python, kann unterstützen Sie %z-format-tag in der strptime für die nachfolgende Zeitzone Spezifikation, aber 2.6.x scheint entfernt zu haben.
Was ist die richtige Art und Weise zu analysieren, diesen string in ein datetime-Objekt?
InformationsquelleAutor der Frage fields | 2009-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mithilfe der parse-Funktion von dateutil:
Diese Weise erhalten Sie ein datetime-Objekt, das Sie dann verwenden können.
Als beantwortetdateutil2.0 geschrieben für Python 3.0 und funktioniert nicht mit Python 2.x. Für Python 2.x dateutil1.5 verwendet werden muss.
InformationsquelleAutor der Antwort txwikinger
%z
unterstützt in Python 3.2+:Auf früheren Versionen:
wo
FixedOffset
ist eine Klasse basierend auf das code Beispiel aus den docs:InformationsquelleAutor der Antwort jfs
Hier ist ein fix der
"%z"
Problem für Python 2.7 und früherenAnstelle von:
Verwenden Sie die
timedelta
zu berücksichtigen, für die Zeitzone, wie diese:Beachten Sie, dass die Daten umgewandelt werden würde, um
GMT
die es erlauben würde, Datumsberechnungen, ohne sich Gedanken über Zeitzonen.InformationsquelleAutor der Antwort Uri Goren
Das problem bei der Verwendung dateutil ist, dass Sie können nicht die gleichen format-string für die Serialisierung und Deserialisierung, wie dateutil hat eine begrenzte Formatierung Optionen (nur
dayfirst
undyearfirst
).In meiner Anwendung speichern, das format string .INI-Datei, und jede Implementierung kann ein eigenes format. Also, ich weiß wirklich nicht, wie die dateutil-Ansatz.
Hier ist eine alternative Methode, die verwendet pytz statt:
InformationsquelleAutor der Antwort sayap
One-liner für die alten Pythons gibt. Sie können multiplizieren eine timedelta durch 1/-1, je nach Vorzeichen, in:
InformationsquelleAutor der Antwort Eric Sellin
Wenn Sie auf Linux sind, dann können Sie das externe
date
Befehl dwim:Dies ist natürlich weniger tragbar als dateutil ist, aber etwas flexibler, da
date
akzeptiert auch Eingaben wie "gestern" oder "letztes Jahr" 🙂InformationsquelleAutor der Antwort Gyom