人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

0時?23時という時間表記があります。
AccessStartHourが6、AccessHoursが3
だとすると6時スタートで6、7、8の3時間のアクセスが可能という意味です。
この時間以外はアクセス禁止という条件文を作りたいと考えています。
しかし例えば22時から5時間だと0時をはさんで22、23、0、1、2となりどうやってif文を作ったらいいか混乱してしまいました。
すべての条件を満たすif文を教えてください。
AccessStartHour>=24またはAccessHours=0ではアクセス禁止という条件も入れてください。

●質問者: plugbot
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:23 24 アクセス スタート
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●60ポイント ベストアンサー

コメントが無効なので回答で失礼します。


使用している言語が不明ですのでとりあえず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;

これでも大丈夫ですよね?

動作は確認しましたが間違っていると悪いので・・・

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ