PHP检查特定日期并提供输出

时间:2016-04-25 21:11:49

标签: php

我有一个PHP脚本,可以检查一周中的哪一天,然后给出当天的开放时间。 (这部分有效) 但我想包括假期。 现在,如果假期是在2016年5月5日,我会尝试。

由于某种原因,它失败了..

这是我的代码:

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;  
        }
    }
?>

3 个答案:

答案 0 :(得分:1)

checkdate如果它是一个有效的日期,包括所有假期(和非假期),则总是返回true,这就是为什么你的逻辑不能按照书面形式工作的原因。

我认为您需要对特定假日日期的数组进行硬编码,然后使用类似in_array的内容来查看它是否在那里。

答案 1 :(得分:1)

通常最好尽可能保持KISS(保持简单愚蠢)的设计。 为什么要转换日期格式而不是以您想要的格式获取当前日期?

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

这也可以让您轻松地将代码转换为使用假日日期数组(这样您可以从数据库中检索)。

也没有必要休息一下&#39;在你的第一个if语句中,在switch之外。

答案 2 :(得分:0)

checkdate功能需要数月和数天没有前导零(l

int

有效示例:

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

这是达到你想要的另一种方式:

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

Live Example