0

特定の時間枠内の時間があれば取​​得するためのベストプラクティス。

現在の時間: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を超えるため、正しくありません。

カフェインが不足しているのかどうかはわかりませんが、頭を包むことができません...

4

2 に答える 2

2

endHour <startHourの場合、実際には別の日になっていることを覚えておく必要があります。それが言うより24時間遅れて。同様に、1時間がこの範囲内にある場合は、どちらの日でもかまいません。したがって、<startHourの場合は、翌日になる可能性があります。

if currentHour < startHour:
   currentHour += 24
if endHour < startHour:
   endHour += 24

if currentHour >= startHour and currentHour <= endHour:
   //...code
于 2012-11-15T21:06:11.483 に答える
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
于 2012-11-15T21:03:12.113 に答える