2016-03-31 12 views
0

私は別のサイトで店舗の開封状況を示すためにこのコードを使用しました。私はそれを過去または真夜中まで開いている別の店に使っています。このため、コードは、 '00'なので、閉店時間の後に時刻を登録しているので、店舗は閉鎖されていると考えます。ここで真夜中を過ぎて何時間も開いた、閉じた通知を表示していますか?

はコードです:

$todays_date = date("D"); 

if($todays_date == 'Fri' || $todays_date == 'Sat'){ 
    $open_hours = '2pm - 1am'; 
    $open = '14'; 
    $close = '01'; 
    $close_soon = '00'; 
} else { 
    $open_hours = '4pm - 12am'; 
    $open = '16'; 
    $close = '00'; 
    $close_soon = '23'; 
} 
$hour_now = date("H"); 

if($hour_now == $close_soon){ 
    $open_close_text = '<span style="color:#F60"><b>Closing Soon</b></span>'; 
} else { 

if($hour_now > $open && $hour_now < $close){ 
    $open_close_text = '<span style="color:#090"><b>Open Now</b></span>'; 
} else { 
    $open_close_text = '<span style="color:#F00"><b>Closed Now</b></span>'; 
} 
} 

は、この問題を修正する方法はありますか?日曜日の真夜中に月曜日に月にフリックすると問題は起きると思うが、それは真夜中に閉鎖されているように見えるが、起こるべきではないだろうか?

ありがとうございました。

+0

はい実際の日付を生成し、組み込みの比較関数を使用します。 – user234461

答えて

1

ここで、この類似した質問に対する良い答えがあります:あなたがしたい場合https://github.com/coryetzkorn/php-store-hours


Determine If Business Is Open/Closed Based On Business Hours

そして、それはあなたが後にしている何をしますように聞こえるここでGitHubの上のPHPクラスは、しかし、あなた自身でそれをするには、単純な答え(あなたの週末/平日の問題を処理しない)ともっと複雑な答えがあります。

簡単な答えは、閉会時刻が開封時刻の前にあることを認識する論理ブロックを追加する必要があるということです。何かのように:

if ($open < $close) { 
    if($hour_now > $open && $hour_now < $close){ 
     $open_close_text = '<span style="color:#090"><b>Open Now</b></span>'; 
    } else { 
     $open_close_text = '<span style="color:#F00"><b>Closed Now</b></span>'; 
    } 
} else { 
    if($hour_now < $open && $hour_now > $close){ 
     $open_close_text = '<span style="color:#F00"><b>Closed Now</b></span>'; 
    } else { 
     $open_close_text = '<span style="color:#090"><b>Open Now</b></span>'; 
    } 
} 

しかし、あなたの週末の問題は解決しません。コメントに記載されているように、PHPの組み込みのstrtotime関数を使用して実際のタイムスタンプを生成し、そこで何を表示するかを検討するのがよいでしょう。

実際には、これは解決された問題です。プログラムする必要があるものは、既に他の誰かによって解決されています。したがって、これが学習の練習でない限り、既存のソリューションを一番上にチェックアウトすることをお勧めします。

+0

答えをくれてありがとう、私は自分の書かれたスクリプトで他人を使うよりも、これをどうやってやるのがもっと快適だと感じています。しかし、私はリンクを見て、上記のスクリプトをテストします。 – Snappysites

+1

心配しないで、それは学ぶのに良い方法です!私が言うように、それはあなたの平日/週末の問題を解決しません。私がお勧めするのは、伝統的な人間のやり方ではなく、「オープン」と「クローズ」のポイントを定義するルートを下ることです。土曜日の「近く」のポイントは実際には土曜日ではないので、それは日曜日です! 24時間で考え始めると、そのアイデアが得られます。 – JoLoCo