El time
módulo se puede inicializar usando segundos desde la época:
>>> 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)
¿Hay una manera elegante de inicializar un datetime.datetime
objeto de la misma manera?
Respuestas:
datetime.datetime.fromtimestamp
servirá, si conoce la zona horaria, podría producir la misma salida que contime.gmtime
o
fuente
datetime.utcfromtimestamp
crea una marca de tiempo ingenua. Tuve queimport pytz
usardatetime.fromtimestamp(1423524051, pytz.utc)
y crear una fecha y hora consciente.pytz
biblioteca si solo deseas la marca de hora UTC - sólo es necesariofrom datetime import datetime, timezone
y luego llama de la siguiente manera:datetime.fromtimestamp(1423524051, timezone.utc)
. Ha guardado la biblioteca extra muchas veces cuando solo necesito la zona horaria UTCpytz
.Segundos desde la época
datetime
hastastrftime
:fuente
De los documentos, la forma recomendada de obtener un objeto de fecha y hora consciente de la zona horaria desde segundos desde la época es:
Python 3 :
Python 2 , usando
pytz
:fuente
pytz
solo necesita obtener elutc
objeto tzinfo. Es fácil crearlo usted mismoTenga en cuenta que datetime.datetime. fromtimestamp (marca de tiempo) y. utcfromtimestamp (marca de tiempo) falla en Windows para fechas anteriores al 1 de enero de 1970, mientras que las marcas de tiempo negativas de Unix parecen funcionar en plataformas basadas en Unix. Los documentos dicen esto:
Ver también Issue1646728
fuente
utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp)
para solucionarlo.