datetime.datetime.fromtimestamp()
es correcto, excepto que probablemente tenga la marca de tiempo en milisegundos (como en JavaScript), pero fromtimestamp()
espera la marca de tiempo de Unix, en segundos.
hacerlo así:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp/1e3)
y el resultado es:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
lo hace responde a su pregunta?
EDITAR: J. F. Sebastián sugirió correctamente para su uso verdadera división por 1e3
(flotar 1000
). La diferencia es significativa, si desea obtener resultados precisos, entonces cambié mi respuesta. La diferencia resulta del comportamiento predeterminado de Python 2.x, que siempre devuelve int
al dividir (usando el operador /
) int
por int
(esto se llama división del piso). Al reemplazar el divisor 1000
(siendo un int
) con el 1e3
divisor (siendo representación de 1000
como float) o con float(1000)
(o 1000.
etc.), la división se convierte verdadera división. Python 2.x devuelve float
cuando se divide por int
float
, float
por int
, float
por float
etc, y cuando hay alguna parte fraccionaria de la marca de tiempo transcurrido a fromtimestamp()
método, el resultado de este método también contiene información acerca de esa parte fraccional (como el número de microsegundos).
uso verdadera división: '/ 1e3' – jfs
@ J.F.Sebastian: Usted es totalmente correcto, he editado mi respuesta y añadido alguna explicación de por qué tiene usted razón. Si no está de acuerdo con la explicación, hágamelo saber. – Tadeck
encuentro más clara para escribir x * 0,001 en lugar de x/1E3 –