datetime.datetime.fromtimestamp()
jest poprawny, z tym wyjątkiem, że prawdopodobnie masz znacznik czasu w milisekundach (jak w JavaScript), ale fromtimestamp()
oczekuje znacznika czasu Unix w sekundach.
Zrób to tak:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
a wynikiem jest:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Czy to odpowiada na twoje pytanie?
EDYCJA : JF Sebastian poprawnie zaproponował użycie prawdziwego dzielenia przez 1e3
(zmiennoprzecinkowe 1000
). Różnica jest znacząca, jeśli chcesz uzyskać dokładne wyniki, dlatego zmieniłem odpowiedź. Różnica wynika z domyślnego zachowania Pythona 2.x, które zawsze powraca int
przy dzieleniu (za pomocą /
operatora) int
przez int
(jest to nazywane dzieleniem podłogi ). Przez zastąpienie dzielnika 1000
(będącego an int
) przez 1e3
dzielnik (będący reprezentacją 1000
jako zmiennoprzecinkowego) lub przez float(1000)
(lub 1000.
itd.), Podział staje się itp. I gdy w znaczniku czasu przekazywanym do prawdziwym podziałem . Python 2.x zwraca float
dzielenie int
przez float
, float
przez int
,float
przezfloat
fromtimestamp()
metoda, wynik tej metody zawiera również informacje o tej części ułamkowej (jako liczbie mikrosekund).
/ 1e3
x * 0.001
ix / 1e3
oba są takie same, różnica polega na zapisie i długości (oryginalny jest krótszy). Dla niektórych osób może być łatwiejsze dzielenie przez liczbę zamiast mnożenia przez multiplikatywną liczbę odwrotną (1/x
), którą zaproponowałeś. Ale dziękuję za zaproponowanie alternatywnego podejścia.fromtimestamp
Podaj datę i godzinę w czasie lokalnym Podajutcfromtimestamp
datę i godzinę w UTC.