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)
Это отвечает на ваш вопрос?
РЕДАКТИРОВАТЬ : Дж. Ф. Себастьян правильно предложил использовать истинное деление на 1e3
(float 1000
). Разница значительна, если вы хотите получить точные результаты, поэтому я изменил свой ответ. Разница обусловлена поведением по умолчанию в Python 2.x, который всегда возвращает int
при делении (используя оператор /
) int
на int
(это называется деление по полу ). При замене делителя 1000
(являющегося int
) делителем 1e3
(представляющим 1000
как число с плавающей запятой) или float(1000)
(или 1000.
и т. Д.) Деление становится истинное деление . Python 2.x возвращает float
при делении int
на float
, float
на int
, float
на float
и т. Д. И когда есть некоторая дробная часть в отметке времени, переданной fromtimestamp()
метод, результат этого метода также содержит информацию об этой дробной части (как число микросекунд).