Python-Datums- und Zeitelemente können entweder naiv oder aufmerksam sein. Falls das datetime-Element tzinfo hat, weiß es es an dieser Stelle. Etwas anderes, das Datum und die Uhrzeit sind naiv. Um die Zeitzone eines datetime-Objekts zu verdeutlichen, definieren Sie eine abstrakte Basisklasse, tzinfo. In jedem Fall charakterisiert die Python-Datetime-Bibliothek einfach die konzeptionelle Basisklasse für tzinfo und überlässt es anderen, die Erstellung von tzinfo tatsächlich zu implementieren. Hier kommt das tz dateutil-Modul ins Spiel — Es bietet alles, was nötig ist, um Upstream-Zeitzonen von den Zeitzoneninformationen Ihres Betriebssystems zu wechseln.
Einstellung:
Verwenden Sie pip oder easy_install dateutil zur Installation. Stellen Sie sicher, dass das Betriebssystem über Zeitzonendaten verfügt.
Unter Linux finden Sie diese normalerweise in
/usr/share/zoneinfo
, und das Ubuntu-Paket heißt tzdata. Bei der Anzahl der Dateien und Verzeichnisse in/usr/share/zoneinfo
, wie z. B. Amerika / und Europa /, kann es losgehen.
UTC-Objekt tzinfo holen — durch Aufrufen von tz.tzutc()
aus
dateutil
import
tz
tz.tzutc ()
tzutc()
Der Offset ist 0 durch den Aufruf von utcoffset ()
Methode mit einem UTC-Datums-/Zeitobjekt.
import
datetime
tz.tzutc (). utcoffset (datetime.datetime.utcnow ())
datetime.timedelta (0)
Übergeben Sie den Pfad an die Dateizeitzone in gettz ()
, um tzinfo-Objekte für andere Zeitzonen abzurufen.
tz.gettz (
`US / Pacific`
)
tzfile (`/ usr / share / zoneinfo / US / Pacific`)
< / p>
tz.gettz (
`Europe / Paris`
)
tzfile(`/usr/share/zoneinfo/Europe/Paris` )
tz.gettz (
`US / Pacific `
). utcoffset (datetime.datetime.utcnow ())
datetime.timedelta (-1, 61200)
Zum Ändern ein anderes Zeit- und Datumselement als UTC zu UTC, müssen Sie sich die Zeitzone merken. Wenn Sie versuchen, die vertrauenswürdige Zeit in UTC zu ändern, erhalten Sie eine ValueError-Ausnahme. Um sich an die naive datetime-Zeitzone zu erinnern, rufen Sie im Grunde die Strategie replace ()
mit der gewünschten tzinfo auf. Sobald das datetime-Element über tzinfo verfügt, kann UTC an diesem Punkt geändert werden, indem die Methode astimezone ()
mit tz.tzutc ()
aufgerufen wird.
< / p>
abc
=
tz.gettz (
`US / Pacific`
)
dat
=
datetime.datetime (
2010
,
9
,
25
,
10
,
36
)
dat.tzinfo
dat.astimezone (tz. tzutc ())
Traceback (neuester Aufruf zuletzt): Datei "/u sr/lib/python2.6/doctest.py", Zeile 1228, in __run compileflags, 1) in test.globs File "", Zeile 1, in dat.astimezone (tz.tzutc ()) ValueError: astimezone () kann nicht auf eine naive Datumszeit angewendet werden
datetime.datetime (2010, 9, 25, 10, 36, tzinfo = tzfile (`/ usr / share / zoneinfo / US / Pacific`)) Alles steht hinter der Arbeit —
Code: Übergeben Sie das Schlüsselwortargument tzinfos an den dateutil-Parser, um nicht erkannte Zeitzonen zu erkennen
datetime. datetime (2010, 8, 4, 18, 30)
datetime.datetime (2010, 8, 4, 18, 30, tzinfo = tzfile (`/ usr / share / zoneinfo / US / Central`)) Python | Zeitzonenkonvertierung __del__: QuestionsPython | Zeitzonenkonvertierung _files: QuestionsShopLatest questions Wiki |