example python datetime unix-timestamp

example - Convierta datetime de Python a marca de tiempo en milisegundos



format date python (4)

En Python 3 esto se puede hacer en 2 pasos:

  1. Convertir timestring al objeto datetime
  2. Multiplique la marca de tiempo del objeto datetime por 1000 para convertirlo en milisegundos.

Por ejemplo como este:

from datetime import datetime dt_obj = datetime.strptime(''20.12.2016 09:38:42,76'', ''%d.%m.%Y %H:%M:%S,%f'') millisec = dt_obj.timestamp() * 1000 print(millisec)

Salida:

1482223122760.0

strptime acepta su calendario y una cadena de formato como entrada. La marca de tiempo (primer argumento) especifica lo que realmente desea convertir en un objeto de datetime y datetime . La cadena de formato (segundo argumento) especifica el formato real de la cadena que ha pasado.

Aquí está la explicación de los especificadores de formato de la documentación oficial :

  • %d : día del mes como un número decimal con cero rellenos.
  • %m - Mes como un número decimal rellenado con cero.
  • %Y - Año con siglo como número decimal
  • %H - Hora (reloj de 24 horas) como un número decimal sin relleno.
  • %M - Minuto como un número decimal rellenado con cero.
  • %S - Segundo como un número decimal rellenado con cero.
  • %f : microsegundo como un número decimal, rellenado con cero a la izquierda.

¿Cómo convertir un tiempo legible por humanos con el formato 20.12.2016 09:38:42,76 a las marcas de tiempo Unix en milisegundos ? Encontré muchas preguntas similares, pero no encontré esta pregunta / respuesta específica.


Necesitas analizar tu formato de hora usando strptime .

>>> import time >>> from datetime import datetime >>> ts, ms = ''20.12.2016 09:38:42,76''.split('','') >>> ts ''20.12.2016 09:38:42'' >>> ms ''76'' >>> dt = datetime.strptime(ts, ''%d.%m.%Y %H:%M:%S'') >>> time.mktime(dt.timetuple())*1000 + int(ms)*10 1482223122760.0


Para Python2.7

Puede formatearlo en segundos y luego multiplicar por 1000 para convertir a milisegundos.

from datetime import datetime d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime(''%s'') d_in_ms = int(d)*1000 print(d_in_ms) print(datetime.fromtimestamp(float(d)))

Salida:

1482206922000 2016-12-20 09:38:42


Para Python2.7: modificar la respuesta de MYGz para no eliminar milisegundos:

from datetime import datetime d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime(''%s.%f'') d_in_ms = int(float(d)*1000) print(d_in_ms) print(datetime.fromtimestamp(float(d)))

Salida:

1482248322760 2016-12-20 09:38:42.760000