Le time
module peut être initialisé en quelques secondes depuis l'époque:
>>> 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 une manière élégante d'initialiser un datetime.datetime
objet de la même manière?
Réponses:
datetime.datetime.fromtimestamp
fera, si vous connaissez le fuseau horaire, vous pouvez produire la même sortie qu'avectime.gmtime
ou
la source
datetime.utcfromtimestamp
crée un horodatage naïf. J'ai dûimport pytz
et utilisédatetime.fromtimestamp(1423524051, pytz.utc)
pour créer un datetime conscient.pytz
bibliothèque si vous souhaitez que l'horodatage UTC - vous ne devezfrom datetime import datetime, timezone
puis l' appeler comme suit:datetime.fromtimestamp(1423524051, timezone.utc)
. Il a enregistré la bibliothèque supplémentaire à plusieurs reprises lorsque je n'ai besoin que du fuseau horaire UTCpytz
.Secondes depuis l'époque
datetime
pourstrftime
:la source
À partir des documents, la méthode recommandée pour obtenir un objet datetime sensible au fuseau horaire en quelques secondes depuis epoch est:
Python 3 :
Python 2 , en utilisant
pytz
:la source
pytz
seulement besoin d'obtenirutc
un objet tzinfo. Il est facile de le créer vousNotez que datetime.datetime. fromtimestamp (timestamp) et. utcfromtimestamp (timestamp) échoue sur les fenêtres pour les dates antérieures au 1er janvier 1970 alors que les horodatages Unix négatifs semblent fonctionner sur les plateformes basées sur Unix. Les docs disent ceci:
Voir aussi Issue1646728
la source
utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp)
pour contourner ce problème.