如果当前日期是两个日期之间的日期,Wordpress将显示不同的元素

时间:2019-05-16 11:17:13

标签: php wordpress date

我的Wordpress模板有4个季节。每个季节都有开始和结束日期。

这是我当前的日期:

$currentDate = date('d-m') . '-' . date('Y');
$currentDate = date('d-m-Y', strtotime($currentDate)); //output 16-05-19

第1季开始和结束日期的示例:

$season_1_start = get_sub_field('start_date','option');
$season_1_start = date('d-m-Y', strtotime($season_1_start));

$season_1_end = get_sub_field('end_date','option');
$season_1_end = date('d-m-Y', strtotime($season_1_end));

季节日期的输出也是'd-m-Y'。

如何检查$currentdate是否在$season_1_start$season_1_end之间

所以:

if (($currentDate >= $season_1_start) && ($currentDate <= $season_1_end)){
    echo "season 1";
}
if (($currentDate >= $season_2_start) && ($currentDate <= $season_2_end)){
    echo "season 2";
 }

if (($currentDate >= $season_3_start) && ($currentDate <= $season_3_end)){
    echo "season 3";
 }

if (($currentDate >= $season_4_start) && ($currentDate <= $season_4_end)){
     echo "season 4";
}

但是我的输出是season 1season 2season 3season 4 因此,似乎每个if语句都是正确的。

我已经检查了季节日期是否正确,并且没有发现任何错误。

今天的结果应该是season 2

1 个答案:

答案 0 :(得分:0)

我不太熟悉WordPress,但是您似乎可以使用纯PHP轻松解决该问题。

您可以使用DateTime类与今天的当前日期进行比较。由于您的格式不是标准格式,因此我们可以使用DateTime::createFromFormat()。这将根据您提供的格式创建DateTime对象-在您的情况下为d/m。由于未指定年份,因此使用当前年份。

您可能需要将条件调整为>=<=,具体取决于您定义范围的日期。

$today = new DateTime;
$season_1_start = DateTime::createFromFormat("d/m", get_sub_field('start_date','option'));
$season_1_end = DateTime::createFromFormat("d/m", get_sub_field('end_date','option'));

if ($today > $season_1_start && $today < $season_1_end) {
    // Season 1
}

然后在其他季节做同样的事情。