2010-08-06 15 views
30

all'inizio e alla fine del mio programma, hoCalcolo Time Difference

from time import strftime 
print int(strftime("%Y-%m-%d %H:%M:%S") 



Y1=int(strftime("%Y")) 
m1=int(strftime("%m")) 
d1=int(strftime("%d")) 
H1=int(strftime("%H")) 
M1=int(strftime("%M")) 
S1=int(strftime("%S")) 


Y2=int(strftime("%Y")) 
m2=int(strftime("%m")) 
d2=int(strftime("%d")) 
H2=int(strftime("%H")) 
M2=int(strftime("%M")) 
S2=int(strftime("%S")) 

print "Difference is:"+str(Y2-Y1)+":"+str(m2-m1)+":"+str(d2-d1)\ 
      +" "+str(H2-H1)+":"+str(M2-M1)+":"+str(S2-S1) 

Ma quando ho cercato di ottenere la differenza, ottengo errori di sintassi .... sto facendo un paio di cose sbagliate, ma Non sono sicuro di cosa stia succedendo ...

Fondamentalmente, voglio solo memorizzare un tempo in una variabile all'inizio del mio programma, quindi memorizzare una seconda volta in una seconda variabile vicino alla fine, quindi a l'ultimo bit del programma, calcola la differenza e visualizzala. Non sto provando a temporizzare una funzione. Sto cercando di registrare quanto tempo ci vuole per un utente per progredire attraverso alcuni menu. Qual è il modo migliore per farlo?

+3

Pensa a cosa succede se l'utente avvia un t 8:59:34 e termina alle 9:10:12 –

risposta

65

Il modulo datetime farà tutto il lavoro per voi:

>>> import datetime 
>>> a = datetime.datetime.now() 
>>> # ...wait a while... 
>>> b = datetime.datetime.now() 
>>> print(b-a) 
0:03:43.984000 

Se non si desidera visualizzare i microsecondi, usa (come suggerito da gnibbler):

>>> a = datetime.datetime.now().replace(microsecond=0) 
>>> b = datetime.datetime.now().replace(microsecond=0) 
>>> print(b-a) 
0:03:43 
+4

se non vuoi microsecondi, puoi usare 'a = datetime.datetime.now(). replace (microsecond = 0)' –

+1

@gnibbler: Hey, simpatico. Molto meglio che scherzare con gli indici di stringhe. –

+0

puoi usare c = b-a, str (c) per ottenere la stringa '0:03:43' –

13
from time import time 
start_time = time() 

... 

end_time = time() 
time_taken = end_time - starttime # time_taken is in seconds 

hours, rest = divmod(time_taken,3600) 
minutes, seconds = divmod(rest, 60) 
6

Non è possibile calcolare separatamente le differenze ... quale sarebbe la differenza per 7:59 e 8:00? Prova

import time 
time.time() 

che ti dà i secondi dall'inizio dell'epoca.

È possibile quindi ottenere il tempo intermedio con qualcosa di simile

timestamp1 = time.time() 
# Your code here 
timestamp2 = time.time() 
print "This took %.2f seconds" % (timestamp2 - timestamp1)