使用python查找以秒为单位的时间差

Ric*_*ard 26 python

我需要用python找到秒的时差.我知道我可以得到这样的差异:

from datetime import datetime
now = datetime.now()
....
....
....
later = datetime.now()
difference = later-now
Run Code Online (Sandbox Code Playgroud)

如何在总秒数上获得差异?

Mic*_*ior 30

import time
now = time.time()
...
later = time.time()
difference = int(later - now)
Run Code Online (Sandbox Code Playgroud)

  • 这给出了一个"TypeError:int()参数必须是一个字符串,一个类似字节的对象或一个数字,而不是Python3中的'datetime.timedelta'"错误.见Robert Longson的回答. (3认同)

Rob*_*son 12

total_seconds方法将返回差异,包括任何小数部分.

from datetime import datetime
now = datetime.now()
...
later = datetime.now()
difference = (later - now).total_seconds()
Run Code Online (Sandbox Code Playgroud)

如果需要,可以通过int()将其转换为整数

  • 我得到`AttributeError:'float'对象没有属性'total_seconds' (4认同)

Jia*_*nda 5

将timedelta元组的项与足够的乘数相加应该会给您答案。 diff.days*24*60*60 + difference.seconds

from datetime import datetime
now = datetime.now()
...
later = datetime.now()
diff = later-now
diff_in_seconds = diff.days*24*60*60 + diff.seconds
Run Code Online (Sandbox Code Playgroud)

变量'diff'是一个timedelta对象,是(天,秒,微秒)元组,如此处https://docs.python.org/2.4/lib/datetime-timedelta.html所述。所有其他单位(小时,分钟..)都转换为该格式。

>> diff = later- now
>> diff
datetime.timedelta(0, 8526, 689000)
>> diff_in_seconds = diff.days*24*60*60 + diff.seconds
>> diff_in_seconds
>> 8527
Run Code Online (Sandbox Code Playgroud)

另一种看待它的方法是,如果您不是负数时差(因此是一个正时差),而不是现在较晚(现在是正的时差),则两者之间经过的时间仍然与前面的时间相同例

>> diff = earlier-now
>> diff
datetime.timedelta(-1, 77873, 311000)
>> diff_in_seconds = diff.days*24*60*60 + diff.seconds
>> diff_in_seconds
>> -8527
Run Code Online (Sandbox Code Playgroud)

因此,即使我们确定工期少于1天,也必须考虑白天,因为这在负时差的情况下是很重要的。