2016-04-25 14 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