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

C'è un modo per ottenerlo come 7.631.000? Posso usare il modulo del tempo, ma ho anche bisogno che le variabili t1 e t2 siano oggetti DateTime. Quindi, se c'è un modo semplice per farlo con datime, sarebbe fantastico. Altrimenti sembrerà brutta:Differenza di tempo in secondi (come virgola mobile)

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

risposta

16

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

+0

o combined = delta.seconds + (float (1)/delta.microseconds) – pocoa

+0

@pocoa - questa è in realtà una conversione errata. 1/time è una frequenza (Hz) che in realtà non ha senso qui. anche questo fornisce chiaramente un risultato diverso rispetto alla risposta accettata su cui hai commentato. – underrun

6

Non so se c'è un modo migliore, ma:

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

o, eventualmente:

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

per la versione più recente di Python (2.6 non ce l'ha, ma 2.7 lo fa), puoi anche usare il metodo total_seconds:

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