2011-08-15 19 views
9

Estoy seguro de que este es un nobrainer para muchos de ustedes, pero me encuentro realmente confundido con todo el asunto datetime.timedelta. Esencialmente llegué a la marca de tiempo algo cuando comienzo startTime y luego llegué a la marca de tiempo al final del proceso endTime y estoy tratando de obtener la diferencia en HH: MM: SS y no estoy teniendo suerte.Cálculo del tiempo en Python (datetime.timedelta?)

consigo este error cuando hago imprimir endTime - startTime:

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time' 

Edited para incluir resultado final:

startTime = datetime.now() 
<... my looping process ...> 
endTime = datetime.now() 
calcdTime = endTime - startTime 
print str(calcdTime)[:-4] 

Este salidas a: H: MM: SS.MM (stripping por lo tanto el último 4 caracteres de timedelta

+1

sustracción de soporte 'datetime.datetime' y' datetime.date', pero 'datetime.time' no. Intenta usar 'datetime.datetime' en su lugar –

Respuesta

10

Utilice datetime en lugar de time. Restar una vez de otra no tiene sentido sin un fecha; no puede suponer que están en el mismo día y el operando de la izquierda es lo primero.

+0

Hombre, me siento tonto. :) Trabajaron como un encanto, gracias. – chow

5

Dependiendo de lo que está haciendo con la información, es posible que desee sólo tiene que utilizar time.time:

import time 

starttime = time.time() 

# do stuff 

endtime = time.time() 

elapsed = endtime - starttime 
print elapsed 

que le dará el tiempo transcurrido en segundos. Esto a menudo es más conveniente que tener un timedelta.