Quiero tener una datetime
cadena de la fecha con milisegundos. Este código es típico para mí y estoy ansioso por aprender cómo acortarlo.
from datetime import datetime
timeformatted= str(datetime.utcnow())
semiformatted= timeformatted.replace("-","")
almostformatted= semiformatted.replace(":","")
formatted=almostformatted.replace(".","")
withspacegoaway=formatted.replace(" ","")
formattedstripped=withspacegoaway.strip()
print formattedstripped
python
datetime
string-formatting
Jurudocs
fuente
fuente
Instant.parse
puede analizar la representación creada constrftime('%Y-%m-%dT%H:%M:%S.%fZ')
Respuestas:
Para obtener una cadena de fecha con milisegundos (3 lugares decimales detrás de los segundos), use esto:
Nota: Para Python3,
print
requiere paréntesis:fuente
2013-08-23 10:18:32.926
es la salida deprint datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
.import datetime
lugar defrom datetime import datetime
, tendrá que usar esto:datetime.datetime.utcnow().strftime("%H:%M:%S.%f")
Con Python 3.6 puedes usar:
Salida:
Más información aquí: https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat
fuente
http://docs.python.org/library/datetime.html#strftime-strptime-behavior
fuente
[:-3]
al final para soltar los últimos 3 dígitos para que solo muestre milisegundos.@Cabbi planteó el problema de que en algunos sistemas, el formato de microsegundos
%f
puede dar"0"
, por lo que no es portátil simplemente cortar los últimos tres caracteres.El siguiente código formatea cuidadosamente una marca de tiempo con milisegundos:
Salida de ejemplo:
Para obtener el resultado exacto que quería el OP, tenemos que quitar los caracteres de puntuación:
Salida de ejemplo:
fuente
Probablemente así:
fuente
%m
debe ser un%M
, porque son minutos, no meses.Supongo que quiere decir que está buscando algo que sea más rápido que datetime.datetime.strftime (), y esencialmente está eliminando los caracteres no alfa de una marca de tiempo utc.
Su enfoque es marginalmente más rápido, y creo que puede acelerar las cosas aún más cortando la cadena:
fuente
resultado
El uso de translate () y el método de segmentación ejecutado al mismo tiempo
translate () presenta la ventaja de ser utilizable en una línea
Comparando los tiempos en base al primero:
fuente
Abordé el mismo problema, pero en mi caso era importante que el milisegundo fuera redondeado y no truncado.
fuente
fuente
fuente
fuente
El problema con
datetime.utcnow()
y otras soluciones es que son lentas.Una solución más eficiente puede verse así:
Dónde
prec
estaría3
en su caso (milisegundos).La función funciona con hasta 9 decimales (tenga en cuenta el número
9
en la segunda cadena de formato).Si desea redondear la parte fraccional, sugeriría construir
"%.9f"
dinámicamente con el número deseado de lugares decimales.fuente