Python中if语句中的时间差计算
我刚开始学习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
。