print getmilliseconds create python datetime timestamp

getmilliseconds - Cómo convertir la marca de tiempo entera a Python datetime



set datetime python (1)

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

¿Cómo convierto este número a una datetime y datetime ?


datetime.datetime.fromtimestamp() es correcto, excepto que probablemente tenga timestamp en milisegundos (como en JavaScript), pero fromtimestamp() espera la marca de tiempo Unix, en segundos.

Hazlo 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)

¿Responde a tu pregunta?

EDITAR : JF Sebastian sugirió correctamente usar la división verdadera por 1e3 (float 1000 ). La diferencia es significativa, si desea obtener resultados precisos, entonces cambié mi respuesta. La diferencia es el resultado del comportamiento predeterminado de Python 2.x, que siempre devuelve int al dividir (usando / operator) int por int (esto se llama división de piso ). Al reemplazar el divisor 1000 (que es un int ) con el divisor 1e3 (representación de 1000 como flotante) o con float(1000) (o 1000. etc.), la división se convierte en división verdadera . Python 2.x devuelve float cuando divide int por float , float por int , float por float etc. Y cuando hay alguna parte fraccional 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 la cantidad de microsegundos).