计算时差

Bri*_*ian 44 python time

在我的课程开始和结束时,我有

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)
Run Code Online (Sandbox Code Playgroud)

但是当我试图找到差异时,我会遇到语法错误......我做错了一些事情,但我不确定发生了什么......

基本上,我只想在程序开始时在变量中存储一个时间,然后在第二个变量附近存储第二个变量,然后在程序的最后一位,计算差异并显示它.我不是想尝试一下功能速度.我试图记录用户进入某些菜单所需的时间.做这个的最好方式是什么?

Tim*_*ker 83

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

>>> import datetime
>>> a = datetime.datetime.now()
>>> # ...wait a while...
>>> b = datetime.datetime.now()
>>> print(b-a)
0:03:43.984000
Run Code Online (Sandbox Code Playgroud)

如果你不想显示微秒,只需使用(如建议的gnibbler):

>>> a = datetime.datetime.now().replace(microsecond=0)
>>> b = datetime.datetime.now().replace(microsecond=0)
>>> print(b-a)
0:03:43
Run Code Online (Sandbox Code Playgroud)

  • 如果你不想要微秒,你可以使用`a = datetime.datetime.now().replace(microsecond = 0)` (5认同)

Joh*_*ooy 18

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)
Run Code Online (Sandbox Code Playgroud)


Joh*_*rra 7

你不能分别计算差异... 7:59和8:00会有什么不同?尝试

import time
time.time()
Run Code Online (Sandbox Code Playgroud)

它为您提供了自纪元开始以来的秒数.

然后你可以用类似的东西获得中间时间

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


use*_*284 5

time.monotonic()(基本上是您计算机的正常运行时间(以秒为单位))在调整计算机时钟时(例如在转换到/从夏令时转换时)不会出现异常行为。

>>> import time
>>>
>>> time.monotonic()
452782.067158593
>>>
>>> a = time.monotonic()
>>> time.sleep(1)
>>> b = time.monotonic()
>>> print(b-a)
1.001658110995777
Run Code Online (Sandbox Code Playgroud)