0

有没有办法检查您的当前时间是否在结束时间小于开始时间的时间范围内?

我看到的所有例子和答案都是开始时间小于结束时间的。例如

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
4

1 回答 1

0

如果您希望忽略时间在午夜结束的想法,您可以轻松地在一行中解决此问题。

一旦你有了开始和结束时间,你可以对它们进行排序sorted(),返回一个新的排序列表,然后将它们重新分配回 satrt 和结束时间。

所以把这条线放进去,应该没问题。

start_time,end_time=sorted([start_time,end_time])

这是键盘上的完整工作脚本以进行确认。

于 2014-05-15T02:05:50.467 回答