time
Moduł może być zainicjowany za pomocą sekund od epoki:
>>> 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)
Czy istnieje elegancki sposób na zainicjowanie datetime.datetime
obiektu w ten sam sposób?
Odpowiedzi:
datetime.datetime.fromtimestamp
zrobi, jeśli znasz strefę czasową, możesz wygenerować taki sam wynik jak ztime.gmtime
lub
źródło
datetime.utcfromtimestamp
tworzy naiwny znacznik czasu. Musiałemimport pytz
i użyłem,datetime.fromtimestamp(1423524051, pytz.utc)
aby utworzyć świadomą datę i godzinę.pytz
bibliotekę, jeśli chcesz tylko UTC znacznik czasu - trzeba tylkofrom datetime import datetime, timezone
, a potem nazwać to w następujący sposób:datetime.fromtimestamp(1423524051, timezone.utc)
. Zapisał dodatkową bibliotekę wiele razy, kiedy potrzebuję tylko strefy czasowej UTCpytz
.Sekundy od epoki
datetime
dostrftime
:źródło
Z dokumentów zalecany sposób uzyskania obiektu datetime uwzględniającego strefę czasową od sekund od epoki to:
Python 3 :
Python 2 , używając
pytz
:źródło
pytz
tylko uzyskaćutc
obiektu tzinfo. Łatwo jest go stworzyć samodzielnieZauważ, że datetime.datetime. fromtimestamp (znacznik czasu) i. utcfromtimestamp (znacznik czasu) nie działa w systemie Windows dla dat sprzed 1 stycznia 1970 r., podczas gdy ujemne znaczniki czasu unix wydają się działać na platformach opartych na systemie Unix. Dokumenty mówią tak:
Zobacz także numer 1646728
źródło
utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp)
, aby go obejść.