2010-08-06 13 views
30

na początku i na końcu mojego programu, mamObliczanie Różnica czasowa

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) 

Ale kiedy próbowałem dostać różnicę, otrzymuję błędy składniowe .... Robię kilka rzeczy źle, ale Nie jestem pewien, co się dzieje ...

Po prostu chcę przechowywać czas w zmiennej na początku mojego programu, a następnie przechowywać drugi raz w drugiej zmiennej pod koniec, a następnie ostatni bit programu, oblicz różnicę i wyświetl ją. Nie próbuję czasować prędkości funkcji. Próbuję zalogować, ile czasu zajęło użytkownikowi przejście przez niektóre menu. Jaki jest najlepszy sposób na zrobienie tego?

+3

Zastanów się, co się stanie, gdy użytkownik zacznie t 8:59:34 i kończy się o 9:10:12 –

Odpowiedz

65

Moduł datetime zrobi wszystko za Ciebie:

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

Jeśli nie chcesz wyświetlać mikrosekundy, po prostu użyj (jak zasugerował glibbler):

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

jeśli nie chcesz mikrosekund, możesz użyć 'a = datetime.datetime.now(). replace (mikrosekunda = 0)' –

+1

@gnibbler: Hej, miły. Znacznie lepiej niż mieszać z indeksami sznurkowymi. –

+0

możesz użyć c = b-a, str (c), aby uzyskać ciąg "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

Nie można obliczyć różnic osobno ... jaka różnica przyniesie 7:59 i 8:00 godziny? Wypróbuj

import time 
time.time() 

który daje ci sekundy od początku epoki.

Następnie można uzyskać czas pośredni z czymś

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