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:
- Convertir timestring al objeto
datetime
- 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