2016-03-31 20 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>'; 
} 
} 

有什麼辦法來解決這個問題?我認爲在午夜之後,當Sun在午夜過後,它會在午夜關閉時顯示爲關閉狀態,但這不應該發生?

謝謝。

+0

是生成實際日期並使用內置的比較功能。 – user234461

回答

1

有一個很好的回答這個類似的問題在這裏:Determine If Business Is Open/Closed Based On Business Hours

而且PHP類在這裏GitHub上這聽起來像它會做你以後:https://github.com/coryetzkorn/php-store-hours


如果你想自己做,但是,有一個簡單的答案(不處理你的週末/週日問題)和更復雜的答案。

簡單的答案是,您需要添加一個邏輯塊,該邏輯塊將識別何時關門時間在開門時間之前。例如:

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