Das time
Modul kann in Sekunden seit der Epoche initialisiert werden:
>>> import time
>>> t1=time.gmtime(1284286794)
>>> t1
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=12, tm_hour=10, tm_min=19,
tm_sec=54, tm_wday=6, tm_yday=255, tm_isdst=0)
Gibt es eine elegante Möglichkeit, ein datetime.datetime
Objekt auf dieselbe Weise zu initialisieren ?
Antworten:
datetime.datetime.fromtimestamp
Wenn Sie die Zeitzone kennen, können Sie dieselbe Ausgabe wie mit erzeugentime.gmtime
oder
quelle
datetime.utcfromtimestamp
wird ein naiver Zeitstempel erstellt. Ich mussteimport pytz
und benutzedatetime.fromtimestamp(1423524051, pytz.utc)
, um eine bewusste Datums- / Uhrzeitangabe zu erstellen.pytz
Bibliothek nicht importieren, wenn Sie nur den UTC-Zeitstempel möchten - Sie müssenfrom datetime import datetime, timezone
ihn nur wie folgt aufrufen und dann wie folgt aufrufen :datetime.fromtimestamp(1423524051, timezone.utc)
. Es hat die zusätzliche Bibliothek viele Male gespeichert, wenn ich nur die UTC-Zeitzone von benötigepytz
.Sekunden seit der Epoche
datetime
bisstrftime
:quelle
In den Dokumenten wird empfohlen, ein zeitzonenbewusstes datetime-Objekt aus Sekunden seit der Epoche abzurufen:
Python 3 :
Python 2 mit
pytz
:quelle
pytz
nur einutc
Tzinfo-Objekt erhalten. Es ist einfach, es selbst zu erstellenBeachten Sie, dass datetime.datetime. fromtimestamp (Zeitstempel) und. utcfromtimestamp (Zeitstempel) schlägt unter Windows für Daten vor dem 1. Januar 1970 fehl, während negative Unix-Zeitstempel auf Unix-basierten Plattformen zu funktionieren scheinen. Die Dokumente sagen dies:
Siehe auch Ausgabe 1646728
quelle
utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp)
, um es zu umgehen.