AccessStartHourが6、AccessHoursが3
だとすると6時スタートで6、7、8の3時間のアクセスが可能という意味です。
この時間以外はアクセス禁止という条件文を作りたいと考えています。
しかし例えば22時から5時間だと0時をはさんで22、23、0、1、2となりどうやってif文を作ったらいいか混乱してしまいました。
すべての条件を満たすif文を教えてください。
AccessStartHour>=24またはAccessHours=0ではアクセス禁止という条件も入れてください。
コメントが無効なので回答で失礼します。
使用している言語が不明ですのでとりあえずC言語を例に回答しますが、
アルゴリズムは共通ですのでご使用の言語に変換して考えてください。
現在時刻を示す変数を currentHour とすると、
// 現在時間がアクセス可能時間より前だったら、24時間を足す currentHour += ( AccessStartHour > currentHour ) ? 24 : 0; // 普通にアクセス開始時間とそれ以降の可能時間の間にあるかどうかを比較する if ( ( currentHour < AccessStartHour ) || ( currentHour >= AccessStartHour + AccessHours ) || ( AccessStartHour >= 24 ) || ( AccessHours == 0 ) ) { accessDeny(); // アクセス禁止処理 } else { accessAllow(); // アクセス許可処理 }
Cはあまり分からないのですが、最初の条件文は
if(AccessStartHour > currentHour )currentHour = currentHour + 24;
これでも大丈夫ですよね?
動作は確認しましたが間違っていると悪いので・・・