Python中if语句中的时间差计算

0 投票
4 回答
9613 浏览
提问于 2025-04-18 17:23

我刚开始学习Python,遇到了一些关于if语句和日期时间模块的问题。我的程序会记录按钮被按下时的时间和释放时的时间。然后,它会把开始时间减去结束时间,得到时间差。我该如何在if语句中使用这个时间差来执行特定的任务呢?以下是我的代码:

from datetime import datetime

start = datetime.now().replace(microsecond=0)
finish = datetime.now().replace(microsecond=0)
total = (finish - start)

if(total > 0:00:08):
    #do something

提前谢谢你们的帮助。

4 个回答

0

试试这个

from datetime import datetime

start = datetime.now()
finish = datetime.now()

delta = finish - start

if delta.total_seconds() > 5:
   # do something
  • 你需要使用datetime,而不是date。
  • 两个时间相减或相加会得到一个时间差(timedelta)。
  • 你要用delta.total_seconds()来获取时间差的总秒数,delta.seconds只会返回时间差中的秒数部分。
2

把两个 datetime 对象相减,会得到一个 timedelta 对象。你可以把这个结果和一个固定的 timedelta 进行比较,比如下面例子中的6秒。

if (total > datetime.timedelta(0, 6)):
    # do something

datetime.timedelta 所有参数都是可选的,默认值为0。参数可以是整数、长整型或浮点数,可以是正数也可以是负数。

class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
3

使用timedelta,详细信息可以查看这个链接:https://docs.python.org/2/library/datetime.html

from datetime import datetime
start = datetime.now()
finish = datetime.now()

total = finish - start

if (total.seconds > 8):
    # do something

对于按钮的按下和释放,使用total.seconds就可以了。delta的计算是以天、秒和微秒为单位的,所以如果你的时间差超过了一天,那就应该使用total_seconds()。不过,使用total_seconds()总是一个安全的选择。

7

当你把一个日期减去另一个日期时,得到的结果是一个叫做 timedelta 的对象。这个对象有一个方法,叫做 total_seconds(),它会给你总的秒数,这样你就可以用这个秒数来进行比较。

if total.total_seconds() > 8:

不过要注意,你的代码是有问题的,因为日期没有 now() 这个方法;你应该用 datetime

撰写回答