Abraham, miembro de nuestro equipo, nos hizo el favor de redactar este escrito ya que domina a la perfección el tema.
Solución:
En Python 3 esto se puede hacer en 2 pasos:
- Convertir cadena de tiempo en
datetime
objeto - Multiplique la marca de tiempo del
datetime
objeto por 1000 para convertirlo a 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)
Producción:
1482223122760.0
strptime
acepta su cadena de tiempo y un formato string como entrada La cadena de tiempo (primer argumento) especifica qué realmente quieres convertir a un datetime
objeto. El formato string (segundo argumento) especifica el real formato de El string que has 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 ceros.%m
– Mes como un número decimal con ceros.%Y
– Año con siglo como número decimal%H
– Hora (reloj de 24 horas) como un número decimal con ceros.%M
– Minuto como un número decimal con ceros.%S
– Segundo como un número decimal con ceros.%f
– Microsegundo como número decimal, con ceros a la izquierda.
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)))
Producción:
1482248322760
2016-12-20 09:38:42.760000
Para aquellos que buscan una respuesta sin analizar y perder milisegundos, dado dt_obj
es una fecha y hora:
python3 solamente, elegante
int(dt_obj.timestamp() * 1000)
compatibles con python2 y python3:
import time
int(time.mktime(dt_obj.utctimetuple()) * 1000 + dt_obj.microsecond / 1000)
Recuerda que tienes la capacidad de añadir un enjuiciamiento si te fue útil.