python - 在Python中检查时间是否位于开始时间和结束时间之间的最有效方法

标签 python datetime

我已经有这方面的工作代码,但我对 python 仍然很陌生,我知道有更好的方法来做到这一点。这是我在树莓派上的运动检测脚本中使用的代码。它只是检查它是否发生在我不在家的时间范围内。我已经从脚本的其余部分中提取了代码:

import time
import datetime
import calendar

now = datetime.datetime.now()
x = time.localtime(time.time())

starttime = datetime.datetime(x.tm_year,x.tm_mon,x.tm_mday,8,20,0)
start_timestamp =  calendar.timegm(starttime.timetuple())
now_timestamp =  calendar.timegm(now.timetuple())
future = starttime + datetime.timedelta(minutes=550)
future_timestamp =  calendar.timegm(future.timetuple())

print start_timestamp
print now_timestamp
print future_timestamp

if now_timestamp > start_timestamp and now_timestamp < future_timestamp:
    print "bam!"

我需要做的就是查看当前时间是否在开始时间和结束时间之间。我确信有一种方法可以更有效地编写此内容,我认为我的代码相当迟钝。

最佳答案

您不需要使用时间戳并不断转换为和通过 - datetime 对象支持比较。所以你可以将其缩短为:

from datetime import datetime, timedelta

now = datetime.now()
start_time = now.replace(hour=8, minute=20, second=0)
end_time = start_time + timedelta(minutes=550)

if start_time <= now <= end_time:
    print 'was out'

关于python - 在Python中检查时间是否位于开始时间和结束时间之间的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760991/

相关文章:

python - 从特定日期开始以不同颜色绘制折线图

datetime - 日期时间字符串到毫秒数

python - 当我用 Altair 在 x 轴上绘制时间时,它不显示年份。有可能解决这个问题吗?

python - 如何确定一个多边形是否在另一个多边形内部?

java - 始终从缺少字段的 Java TemporalAccessor 返回 ZonedDateTime

javascript - JS : how to get current datetime?

ruby-on-rails - 在 Rails 中提供当前日期

python - 自 01/01/1970 以来经过了多少秒,包括闰秒?

python - 在 Python 中为应用程序中的任何文件全局加载类或函数

python - Python 中的快速泊松圆盘采样 [Robert Bridson]