So konvertieren Sie eine Zeitzone bewusst string zu datetime in python ohne dateutil?
Habe ich zum konvertieren einer Zeitzone-bewusst string python - datetime
Objekt.
Beispielsweise 2012-11-01T04:16:13-04:00
.
Ich finde, es ist ein dateutil
Modul, die haben eine parse-Funktion, um es zu tun, aber ich weiß nicht wirklich wollen, es zu benutzen, wie es fügt eine Abhängigkeit.
Also, wie kann ich es tun? Ich habe versucht, so etwas wie die folgenden, aber mit kein Glück.
datetime.datetime.strptime("2012-11-01T04:16:13-04:00", "%Y-%m-%dT%H:%M:%S%Z")
Was ist falsch mit dem hinzufügen einer Abhängigkeit, wenn, diese Abhängigkeit genau erfüllt Ihre Anforderungen? Sicherlich, wenn die gleichen Ergebnisse erzielt werden könnten, ohne zusätzliches Modul, gäbe es keinen Grund für die Modul überhaupt existieren, gäbe es da? Nur wie schwer ist es für Sie hinzufügen einer Abhängigkeit?
Ich denke, es ist vielleicht eine persönliche gefallen? Ich möchte wirklich nicht vorstellen, eine ganze große Modul in das Projekt, da ich nur eine kleine Funktion.
Was ist der konkrete Kosten, das hinzufügen einer Abhängigkeit zu Ihrem Projekt, verglichen mit den Kosten, wodurch der code schwerer zu verstehen, als es sein muss. Ignorieren Sie die Tatsache, dass Sie nur aktuell eine single-Funktion - konzentrieren Sie sich auf die Kosten.
Ich denke, es ist vielleicht eine persönliche gefallen? Ich möchte wirklich nicht vorstellen, eine ganze große Modul in das Projekt, da ich nur eine kleine Funktion.
Was ist der konkrete Kosten, das hinzufügen einer Abhängigkeit zu Ihrem Projekt, verglichen mit den Kosten, wodurch der code schwerer zu verstehen, als es sein muss. Ignorieren Sie die Tatsache, dass Sie nur aktuell eine single-Funktion - konzentrieren Sie sich auf die Kosten.
InformationsquelleAutor lxyu | 2012-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Python-3.7,
datetime.datetime.fromisoformat()
verarbeiten kann Ihre format:In älteren Python-Versionen kann man nicht, nicht ohne eine ganze Menge akribischer manuelle Zeitzone definieren.
Python nicht über eine Zeitzone-Datenbank, weil es veraltet zu schnell. Stattdessen Python verlässt sich auf externe Bibliotheken, die eine viel schnellere release-Zyklus, um ordnungsgemäß konfiguriert sind, Zeitzonen für dich.
Als Nebeneffekt bedeutet dies, dass die Zeitzone Analyse muss auch eine externe Bibliothek. Wenn
dateutil
ist zu schwer-Gewicht für Sie ist, verwenden Sienach ISO8601
statt, es werden analysieren Ihre spezifischen format gut:iso8601
ist ein satte 4KB klein. Vergleichen Sie totpython-dateutil
's 148KB.Ab Python 3.2 Python kann einfach verarbeiten offset-basierte Zeitzonen, und
%z
analysieren-hhmm
und+hhmm
Zeitzone offsets in einen timestamp. Das bedeutet, dass für eine ISO-8601-Zeitstempel, die Sie haben würden, zu entfernen, die:
in der Zeitzone:Der Mangel der richtigen ISO-8601-Analyse wird verfolgt, in Python-Problem 15873.
datetime
stehen könnte, etwas wieiso8601
zu handhaben ISO 8601 Zeitzone-ein bisschen Parsen und zweitzinfo
Unterklassen.Nach ISO8601 ist wirklich simpel über Zeitzonen hinweg, aber sobald Sie schließen diejenigen ein, die offsets in der python stdlib, Sie werden überflutet von Missverständnissen, warum real-life-Zeitzonen (das sind mehr als eine bloße offset), die nicht arbeiten, usw.
es ist nicht schmerzhaft zu definieren
FixedOffset
Klasse. Hier ist code-BeispielInformationsquelleAutor Martijn Pieters
Hier ist die Python Doc für datetime-Objekt mit dateutil-Paket..
python-dateutil ist genau das "externe lib".
InformationsquelleAutor Silent Spectator
Gibt es zwei Probleme mit dem code in der ursprünglichen Frage: es sollte ein
:
in die Zeitzone und das format-string für "Zeitzone als offset" ist die Kleinschreibung%z
nicht die Obere%Z
.Dies funktioniert für mich in Python v3.6
print(t)
fügen Sie den Doppelpunkt, um den utc-offset?Weil standardmäßig datetime verwendet der
isoformat(sep=' ')
für die__str__
Funktion druckt den UTC-offset "+HH:MM". Mitprint(t.strftime("%Y-%m-%dT%H:%M:%S%z"))
drucken, ohne die ":" in der Zeitzone.Mit einem Doppelpunkt in der Zeitzone ist nicht falsch. Viele Quellen, präsentieren Ihre Zeiten in string-form:
2012-11-01T04:16:13-04:00
. OP sucht zu analysieren, form.InformationsquelleAutor Jamie Czuy
Ich bin neu in Python, aber einen Weg gefunden zu konvertieren
2017-05-27T07:20:18.000-04:00
zu
2017-05-27T07:20:18
ohne Download neue Werkzeuge.Ich bin sicher, es gibt bessere Möglichkeiten, dies zu tun, ohne aufschneiden, bis der string so sehr, aber dieser bekam den job zu erledigen.
InformationsquelleAutor wiseco68
Können Sie wandeln wie dieses.
InformationsquelleAutor Muruganandam C