Le module time
peut être initialisé en secondes depuis Epoch:
>>> 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)
Existe-t-il un moyen élégant d’initialiser un objet datetime.datetime
de la même manière?
datetime.datetime.fromtimestamp
fera, si vous connaissez le fuseau horaire, vous pourriez produire le même résultat qu'avec _time.gmtime
_
_>>> datetime.datetime.fromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 11, 19, 54)
_
ou
_>>> datetime.datetime.utcfromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 10, 19, 54)
_
Depuis la documentation, la méthode recommandée pour obtenir un objet datetime prenant en compte le fuseau horaire à partir de secondes depuis Epoch est la suivante:
Python :
from datetime import datetime, timezone
datetime.fromtimestamp(timestamp, timezone.utc)
Python 2 , en utilisant pytz
:
from datetime import datetime
import pytz
datetime.fromtimestamp(timestamp, pytz.utc)
Notez que datetime.datetime . fromtimestamp (timestamp) et . tcfromtimestamp (timestamp) échouent sous Windows pour les dates antérieures au 1er janvier 1970, alors que les horodatages négatifs Unix semblent fonctionner sous unix. plates-formes Les docs disent ceci:
Voir aussi Issue1646728