Frage

Das time Modul kann unter Verwendung Sekunden seit 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 Art und Weise ein datetime.datetime Objekt in der gleichen Art und Weise zu initialisieren?

War es hilfreich?

Lösung

datetime.datetime.fromtimestamp tun wird, wenn Sie die Zeitzone kennen, könnten Sie produzieren die gleiche Leistung wie mit time.gmtime

>>> datetime.datetime.fromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 11, 19, 54)

oder

>>> datetime.datetime.utcfromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 10, 19, 54)

Andere Tipps

Sekunden seit Epoche datetime strftime :

>>> ts_epoch = 1362301382
>>> ts = datetime.datetime.fromtimestamp(ts_epoch).strftime('%Y-%m-%d %H:%M:%S')
>>> ts
'2013-03-03 01:03:02'

Aus den Dokumenten, die empfohlene Methode, eine Zeitzone bewusst Datetime-Objekts von Sekunden seit Epoche des Erhaltens ist:

Python 3 :

from datetime import datetime, timezone
datetime.fromtimestamp(timestamp, timezone.utc)

Python 2 , mit pytz :

from datetime import datetime
import pytz
datetime.fromtimestamp(timestamp, pytz.utc)

Beachten Sie, dass datetime.datetime. fromtimestamp ( Zeitstempel) und. utcfromtimestamp (Timestamp) scheitern an Fenstern für Daten vor dem 1. Januar 1970 während negativer Unix-Zeitstempel zu funktionieren scheint auf Unix-basierte Plattformen. Die docs sagen dies:

" Diese Valueerror erhöhen kann, wenn der Zeitstempel aus der Bereich der Werte, die von der Plattform C gmtime () Funktion unterstützt. Es ist üblich, dies Jahren 1970 bis 2038 beschränkt werden "

Siehe auch Issue1646728

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top