2016-04-25 39 views
0

我有一個PHP腳本,檢查一週中的哪一天,然後給出當天的開放時間。 (這部分工作) 但我想包括假期。 現在我想如果假期是在5/5/2016。PHP檢查某個日期,並給出輸出

出於某種原因,它的失敗..

這裏是我的代碼:

PHP - 編輯

<?php 
    $strVerlofDag = '05/05/2016'; 
    if (date('d/m/Y') == $strVerlofDag); 
    { 
     echo 'Gesloten wegens O.H. Hemelvaart'; 
    } 
    else 
    { 
     $vandaag = date("l"); 
     switch($vandaag) 
     { 
      case 'Monday': 
       echo 'Maandag: 14u - 19u'; 
       break; 
      case 'Tuesday': 
       echo 'Dinsdag: 14u - 19u'; 
       break; 
      case 'Wednesday': 
       echo 'Woensdag: : 14u - 19u'; 
       break; 
      case 'Thursday': 
       echo 'Donderdag: 14u - 19u'; 
       break; 
      case 'Friday': 
       echo 'Vrijdag: : 14u - 19u'; 
       break; 
      case 'Saturday': 
       echo 'Zaterdag: 9u - 17u'; 
       break; 
      case 'Sunday': 
       echo 'Zondag: gesloten'; 
       break; 
     } 
    } 
?> 
+2

'Saterday'如果您的功能取決於拼寫,拼寫錯誤。編輯:它是http://php.net/manual/en/function.date.php *「l(小寫 - 星期日至星期六\t的全文本表示法」* –

+0

和...'下午17點「,要麼是軍事時間的17點,要麼是下午5點。 –

+0

我不確定在這裏使用'checkdate()'函數後面的邏輯是什麼,因爲它返回的是真或假,如果日期有效或者不是。 – Maximus2012

回答

0

checkdate funtion需要幾個月的時間和天數沒有前導零(int

bool checkdate (int $month , int $day , int $year) 

有效例子:

checkdate(2, 29, 2016); 
checkdate(9, 8, 2016); 

這裏是另一種方式來實現你想要的:

<?php 
date_default_timezone_set("Europe/Lisbon"); 
$holliday = new DateTime("04/25/2016"); 
$holliday->format("m/d/Y"); 
$today = new DateTime("today"); 

if($holliday == $today){ 
    echo "Holliday"; 
} 

Live Example

1

checkdate總是返回true,如果它是一個有效的日期,包括所有假期(和非假期),所以這就是爲什麼你邏輯將不會像寫入那樣工作。

我覺得你需要硬編碼你的特定假期日期的數組,然後使用類似in_array的東西來看看它是否在那裏。

1

儘可能保持KISS(保持簡單愚蠢)設計通常是最好的。 爲什麼要轉換日期格式而不是以所需格式獲取當前日期?

$strHolidayDate = '05/05/2016'; 
if (date('d/m/Y') == $strHolidayDate); 
{ 
    echo 'Closed for holiday'; 
} 
else 
{ 
    //... do switch logic here. 
} 

這也可以讓你很容易地將代碼轉換爲使用假日期數組(例如你從DB中檢索的東西)。

在開關之外的第一條if語句中也沒有必要有'break'。

+0

觀看我的編輯帖子。他仍然失敗。 – user3360972