datetime.datetime.fromtimestamp()
верно, за исключением того, что вы, вероятно, имеете метку времени в миллисекундах (как в JavaScript), но ожидаете fromtimestamp()
метку времени Unix в секундах.
Сделай это так:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
и результат:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Это отвечает на ваш вопрос?
РЕДАКТИРОВАТЬ : JF Себастьян правильно предложил использовать истинное деление на 1e3
(плавать 1000
). Разница значительна, если вы хотите получить точные результаты, поэтому я изменил свой ответ. Разница заключается в поведении по умолчанию в Python 2.x, которое всегда возвращается int
при делении (используя /
оператор) int
на int
(это называется делением по полу ). Заменяя делитель 1000
(будучи int
) 1e3
делителем (являясь представлением 1000
как float) или float(1000)
(или 1000.
т. Д.), Деление становится истинным делением . Python возвращает 2.x , float
когда делящиеся int
на float
, float
по int
,float
и float
т. д. И когда в метке времени, передаваемой fromtimestamp()
методу, есть некоторая дробная часть , результат этого метода также содержит информацию об этой дробной части (в виде числа микросекунд).
/ 1e3
x * 0.001
иx / 1e3
оба одинаковы, разница в обозначениях и длине (оригинал короче). Для некоторых людей может быть более понятно делить на число вместо умножения на умноженное на обратное число (1/x
), которое вы предложили. Но спасибо за предложение альтернативного подхода.fromtimestamp
дает вам дату и время по местному времени,utcfromtimestamp
дает вам дату и время в UTC.