当结束时间小于开始时间时,有没有办法检查当前时间是否在时间范围内?
我看到的所有示例和答案都是在开始时间小于结束时间的时候。例如
import datetime
start_time = datetime.time(1)
end_time = datetime.time(12)
for i in range(0,24):
now = datetime.time(i)
if start_time <= now <= end_time:
print "%s in range" % now
else:
print "%s not in range" % now
如果now
在范围内,则会正确返回。
然而,这种方法不起作用,结束时间大于开始时间。
start_time = datetime.time(22)
end_time = datetime.time(12)
这始终返回not in range
。
如果可能,我想避免做这样的事情:
if start_time < end_time:
# do start <= now <= end comparison
else:
# check if now is past midnight or before midnight
# then check against start or end time
答案 0 :(得分:0)
如果您想忽略午夜时间被包裹的想法,您可以轻松地将其修复为一行。
一旦有了开始时间和结束时间,就可以使用sorted()
对它们进行排序,然后返回一个新的排序列表,然后将它们重新分配给satrt和结束时间。
所以把这一行放进去就应该没事了。
start_time,end_time=sorted([start_time,end_time])