在给定时间范围内获得时间的最佳做法。
当前时间:22:00
时间范围(开始,结束时间):
00:00 - 08:00
04:00 - 12:00
08:00 - 16:00
12:00 - 20:00
16:00 - 00:00
20:00 - 04:00
使用逻辑:
if currentHour >= startHour and currentHour <= endHour:
...
如果时间是22:00,那么它真的不会有效,因为它不会低于04:00。 使用OR将无法工作,因为那时22将超过00:00,这是不对的。
哎呀我不知道是不是缺少咖啡因或什么,但我不能把头包裹起来......
答案 0 :(得分:2)
你必须记住,如果endHour&lt; startHour,它实际上是在不同的一天,即。比它说的晚24小时。同样地,在这个范围内的一个小时,它可以在任何一天,所以如果它是&lt; startHour,它可能是第二天。
if currentHour < startHour:
currentHour += 24
if endHour < startHour:
endHour += 24
if currentHour >= startHour and currentHour <= endHour:
//...code
答案 1 :(得分:0)
如果00:00是时间范围的结束,请将其设为24:00。这将解决使您的if
语句以预期方式工作的问题。
我的错误:执行此操作
if currentHour >= startHour and currentHour <= endHour or currentHour <= startHour and currentHour >= endHour :
编辑:生成以下内容,
print cur, start, end, logic1, logic2
23 8 0 False False
23 20 12 False False
23 0 20 False False
23 12 4 False False
23 8 16 False False
23 16 8 False False