O time
módulo pode ser inicializado usando segundos desde a é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)
Existe uma maneira elegante de inicializar um datetime.datetime
objeto da mesma maneira?
Respostas:
datetime.datetime.fromtimestamp
Se você souber o fuso horário, poderá produzir a mesma saída que comtime.gmtime
ou
fonte
datetime.utcfromtimestamp
cria um registro de data e hora ingênuo. Eu preciseiimport pytz
e useidatetime.fromtimestamp(1423524051, pytz.utc)
para criar um datetime consciente.pytz
biblioteca se você quiser apenas o timestamp UTC - você só precisafrom datetime import datetime, timezone
e, em seguida, chamá-lo da seguinte forma:datetime.fromtimestamp(1423524051, timezone.utc)
. Ele salvou a biblioteca extra muitas vezes quando eu só preciso do fuso horário UTCpytz
.Segundos desde a época
datetime
parastrftime
:fonte
A partir dos documentos, a maneira recomendada de obter um objeto de data e hora com reconhecimento de fuso horário de segundos desde a época é:
Python 3 :
Python 2 , usando
pytz
:fonte
pytz
apenas obter outc
objeto tzinfo. É fácil criá-lo você mesmoObserve que datetime.datetime. fromtimestamp (timestamp) e. utcfromtimestamp (timestamp) falha no Windows em datas anteriores a 1º de janeiro de 1970, enquanto os timestamps negativos para unix parecem funcionar em plataformas baseadas em unix. Os documentos dizem o seguinte:
Veja também a edição1646728
fonte
utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp)
, para contornar isso.