En Python, comment voulez-vous convertir secondes depuis epoch à un `datetime` objet?
La time
module peut être initialisée à l'aide de secondes depuis l'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)
Est-il un moyen élégant pour initialiser un datetime.datetime
objet de la même manière?
- pour l'opération inverse, rendez-vous ici: convert-a-datetime-object-to-seconds
Vous devez vous connecter pour publier un commentaire.
datetime.datetime.fromtimestamp
va le faire, si vous connaissez le fuseau horaire, vous pourriez produire le même résultat qu'avectime.gmtime
ou
datetime.utcfromtimestamp
crée un naïf d'horodatage. J'ai dûimport pytz
et l'utilisationdatetime.fromtimestamp(1423524051, pytz.utc)
pour créer un courant de type datetime.pytz
bibliothèque si vous voulez seulement le horodatage UTC - vous avez seulement besoin defrom datetime import datetime, timezone
et ensuite appeler comme suit:datetime.fromtimestamp(1423524051, timezone.utc)
. Il a sauvé la bibliothèque de nombreuses fois où j'ai seulement besoin de le fuseau horaire UTC depytz
.De secondes depuis l'époque de
datetime
àstrftime
:De la documentation, il est recommandé d'obtenir un fuseau horaire conscient objet datetime de secondes depuis l'epoch est:
Python 3:
Python 2, à l'aide de
pytz
:pytz
juste pour obtenirutc
tzinfo objet. Il est facile de créer vous-mêmeNoter que le type datetime.datetime.fromtimestamp(timestamp) et .utcfromtimestamp(timestamp) échouer sur windows pour les dates avant Janv. 1, 1970, tandis que le négatif des timestamps unix semblent fonctionner sur les plateformes unix. Les docs disent ceci:
Voir aussi Issue1646728
utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp)
, à le contourner.