Ответ 1
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)
Отвечает ли ваш вопрос на ваш вопрос?
EDIT: Дж. Ф. Себастьян правильно предложил использовать истинное деление на 1e3
(float 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()
метод, этот результат метода также содержит информацию об этой дробной части (в виде числа микросекунд).