尝试使用以下公式编写IF语句以显示圣诞节开放时间,如果今天的日期是12月1日到1月5日,否则显示正常时间。但我所得到的只是正常时期。
$xmasStart = date('m-d', strtotime('11-01'));
$xmasEnd = date('m-d', strtotime('01-05'));
if((date('m-d') > $xmasStart) && (date('m-d') < $xmasEnd)) {
echo 'Christmas Opening Hours';
} else {
echo '<p class="marginbottom0">Monday to Friday: 8am - 6pm<br><small>Saturday & Sunday: Appointment only</small></p>';
}
答案 0 :(得分:4)
不要使用字符串来进行日期数学运算。使用更清晰,更易于理解的DateTime()
。
DateTime()
个对象具有可比性,因此您无需将它们转换为字符串即可进行比较。此外,它是时区和夏令时的时间(这里没有发挥作用,但在其他时候可能会使用日期)。
<?php
$xmasStart = new DateTime('11/1 00:00:00');
$xmasEnd = new DateTime('1/5 23:59:59');
$now = new DateTime();
if($now >= $xmasStart && $now < $xmasEnd) {
echo 'Christmas Opening Hours';
} else {
echo '<p class="marginbottom0">Monday to Friday: 8am - 6pm<br><small>Saturday & Sunday: Appointment only</small></p>';
}
此外,我将每天的时间添加为DateTime,strtottime()
将使用当前时间而不是每天的开始或结束,因此在圣诞节的最后一天您将无法显示正确的时间小时。 (您也可以将最后一天更改为1/6 00:00:00
)。
答案 1 :(得分:2)
strtotime
无法理解您的短时间定义,请尝试以Y-m-d
格式(2017-12-01
和2018-01-05
分别使用完整日期)。另请注意,您的比较不包括边缘日期,因此您可能希望使用<=
和>=
。
$xmasStart = date('Y-m-d', strtotime('2017-12-01'));
$xmasEnd = date('Y-m-d', strtotime('2018-01-05'));
$now = date('Y-m-d');
if(($now >= $xmasStart) && ($now <= $xmasEnd)) {
echo 'Christmas Opening Hours';
} else {
echo '<p class="marginbottom0">Monday to Friday: 8am - 6pm<br><small>Saturday & Sunday: Appointment only</small></p>';
}