終了時間が開始時間よりも短い時間帯に現在の時間が含まれているかどうかを確認する方法はありますか?
私が見たすべての例と回答は、開始時間が終了時間よりも短い場合です。例えば
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