2010-05-21 10 views
16
>>> from datetime import datetime 
>>> t1 = datetime.now() 
>>> t2 = datetime.now() 
>>> delta = t2 - t1 
>>> delta.seconds 
7 
>>> delta.microseconds 
631000 

¿Hay alguna manera de obtenerlo como 7.631000? Puedo usar el módulo de tiempo, pero también necesito las variables t1 y t2 como objetos DateTime. Entonces, si hay una manera fácil de hacerlo con datettime, sería genial. De lo contrario parecerá fea:Diferencia de tiempo en segundos (como un punto flotante)

t1 = datetime.now() 
_t1 = time.time() 
t2 = datetime.now() 
diff = time.time() - _t1 

Respuesta

16

combined = delta.seconds + delta.microseconds/1E6

+0

o combinado = delta.segundos + (float (1)/delta.microseconds) – pocoa

+0

@pocoa - esto es en realidad una conversión incorrecta. 1/time es una tasa (Hz) que realmente no tiene sentido aquí. esto también proporciona claramente un resultado diferente al de la respuesta aceptada sobre la que usted comentó. – underrun

6

No sé si hay una manera mejor, pero:

((1000000 * delta.seconds + delta.microseconds)/1000000.0) 

o posiblemente:

"%d.%06d"%(delta.seconds,delta.microseconds) 
23

para una versión más nueva de Python (2.6 no lo tiene, pero 2.7 sí lo tiene), también puede usar el método total_seconds:

from datetime import datetime 
t1 = datetime.now() 
t2 = datetime.now() 
delta = t2 - t1 
delta.total_seconds() 
Cuestiones relacionadas