我有一个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;
}
}
?>
答案 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);