表单选项日期选择器-1年


Form Options Date Picker - 1 Year

我有一个脚本,可以从下拉列表中选择未来一整年的日期,所以现在我想在过去一年也这样做,但颠倒它是行不通的。

这是我的代码:

1 Year Ahead

<?php
    $day = date('Y-m-d');
    $last_day = date('Y-m-d', strtotime($day . '+ 1 year'));
    while($day < $last_day) {
        echo '<option value="'.$day.'">'.date('jS F Y', strtotime($day)).'</option>';
        $day = date('Y-m-d', strtotime($day . ' + 1 day'));
    }
?>

1 Year Into The Past

<?php
    $day = date('Y-m-d');
    $last_day = date('Y-m-d', strtotime($day . '- 1 year'));
    while($day < $last_day) {
        echo '<option value="'.$day.'">'.date('jS F Y', strtotime($day)).'</option>';
        $day = date('Y-m-d', strtotime($day . ' - 1 day'));
    }
?>

Furure日期选择器工作正常,但过去的选择器没有显示任何输出。造成这种情况的原因是什么?解决方案是什么?

您应该更改的是在while循环的条件下更改比较器,即以下

while($day < $last_day) {

while($day > $last_day) {

原因

由于$day是今天,而$last_day是过去一年的日期,($day<$last_day)条件永远不会满足。在每个循环中,从今天开始,将$day变量递减一天。因此,您所需要做的就是渲染选项标记,直到$day变量大于$last_day变量。

您可以使用此

    $day = date('Y-m-d', strtotime('-1 year'));
    $last_day = date('Y-m-d', strtotime($day . '+ 1 year'));
    while($day < $last_day) {
        echo '<option value="'.$day.'">'.date('jS F Y', strtotime($day)).'</option>';
        $day = date('Y-m-d', strtotime($day . ' + 1 day'));
    }

我相信你可以看到我通过在你的起始$day变量中添加strtotime('-1 year')来减少起始时间

希望这能帮助

原因是逻辑无效。将$day更改为$today,以便了解原因,并将$last_day更改为$the_day。您可以看到逻辑$today<如果你在寻找过去,那么_日期没有意义,但$the_day<今天有:

<?php
    $today = date('Y-m-d');
    $the_day = date('Y-m-d', strtotime($today . '- 1 year'));
    while($the_day < $today) {
        echo '<option value="'.$the_day.'">'.date('jS F Y', strtotime($the_day)).'</option>';
        $the_day = date('Y-m-d', strtotime($the_day . ' + 1 day'));
    }
?>