Cómo convertir timestamp entero a datetime de Python


Tengo un archivo de datos que contiene marcas de tiempo como "1331856000000". Desafortunadamente, no tengo mucha documentación para el formato, así que no estoy seguro de cómo se formatea la marca de tiempo. He probado el estándar de Python datetime.fromordinal() y datetime.fromtimestamp() y algunos otros, pero nada coincide. Estoy bastante seguro de que ese número particular corresponde a la fecha actual (por ejemplo, 2012-3-16), pero no mucho más.

¿Cómo convertir este número a un datetime?

Author: fragilewindows, 2012-03-17

1 answers

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 Unix, en segundos.

Hazlo así: {[27]]}

>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)

Y el resultado es:

>>> date
datetime.datetime(2012, 3, 16, 1, 0)

¿Responde a su pregunta?

EDITAR : J. F. Sebastian sugirió correctamente a usar la verdadera división por 1e3 (float 1000). La diferencia es significativa, si desea obtener resultados precisos, por lo que cambié mi respuesta. La diferencia se debe al comportamiento predeterminado de Python 2.x, que siempre devuelve int al dividir (usando el operador /) int por int (esto se llama división de piso). Reemplazando el divisor 1000 (siendo un int) con el divisor 1e3 (siendo la representación de 1000 como flotador) o con float(1000) (o 1000. etc.), la división se convierte en verdadera división. Python 2.x devuelve float al dividir int por float, float por int, float por float, etc. Y cuando hay alguna parte fraccionaria en la marca de tiempo pasada al método fromtimestamp(), el resultado de este método también contiene información sobre esa parte fraccionaria (como el número de microsegundos).

 226
Author: Tadeck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-24 16:23:32