关于python:计算时间差

Calculating Time Difference

在我的节目开始和结束时,我

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)

但是当我试图得到区别时,我会得到语法错误…我做错了一些事情,但我不知道发生了什么…

基本上,我只想在程序开始时将一个时间存储在一个变量中,然后在接近结束时将第二个时间存储在第二个变量中,然后在程序的最后一个位计算差异并显示出来。我不想计算函数速度的时间。我试图记录用户在某些菜单中前进所花的时间。最好的方法是什么?


datetime模块将为您完成所有工作:

1
2
3
4
5
6
>>> import datetime
>>> a = datetime.datetime.now()
>>> # ...wait a while...
>>> b = datetime.datetime.now()
>>> print(b-a)
0:03:43.984000

如果您不想显示微秒,只需使用(如gnibler建议的那样):

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


1
2
3
4
5
6
7
8
9
10
from time import time

start_time = time()
...

end_time = time()
seconds_elapsed = end_time - start_time

hours, rest = divmod(seconds_elapsed, 3600)
minutes, seconds = divmod(rest, 60)


您不能单独计算差异…7点59分和8点有什么区别?尝试

1
2
import time
time.time()

它给你从新纪元开始的秒数。

然后你可以得到中间时间

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

time.dumonic()(基本上是你的计算机的正常运行时间,以秒为单位)可以保证当你的计算机的时钟被调整时(例如从夏令时转换到夏令时/从夏令时转换到夏令时时)不会出现错误行为。

1
2
3
4
5
6
7
8
9
10
>>> import time
>>>
>>> time.monotonic()
452782.067158593
>>>
>>> a = time.monotonic()
>>> time.sleep(1)
>>> b = time.monotonic()
>>> print(b-a)
1.001658110995777