x时间范围内的时间(24小时时间格式)

时间:2012-11-15 20:59:49

标签: python time frame strftime

在给定时间范围内获得时间的最佳做法。

当前时间: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,这是不对的。

哎呀我不知道是不是缺少咖啡因或什么,但我不能把头包裹起来......

2 个答案:

答案 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