datetime.datetime.fromtimestamp()
está correto, exceto que você provavelmente está tendo o registro de data e hora em milissegundos (como no JavaScript), mas fromtimestamp()
espera o registro de data e hora do Unix, em segundos.
Faça assim:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
e o resultado é:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Responde a sua pergunta?
EDIT : JF Sebastian sugeriu corretamente o uso de divisão verdadeira por 1e3
(float 1000
). A diferença é significativa, se você deseja obter resultados precisos, mudei minha resposta. A diferença resulta do comportamento padrão do Python 2.x, que sempre retorna int
ao dividir (usando o /
operador) int
por int
(isso é chamado de divisão de piso ). Substituindo o divisor 1000
(sendo um int
) pelo 1e3
divisor (sendo representação de 1000
como flutuador) ou por float(1000)
(ou 1000.
etc.), a divisão se torna verdadeira divisão . O Python 2.x retorna float
ao dividir int
por float
, float
por int
,float
por float
etc. E quando houver uma parte fracionária no carimbo de data / hora passada para o fromtimestamp()
método, o resultado desse método também conterá informações sobre essa parte fracionária (como o número de microssegundos).
/ 1e3