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

时间:2014-10-29 14:32:21

标签: php date drop-down-menu

我有一个脚本,可以让我从下拉列表中选择一个未来一整年的日期,所以现在我想在过去的一年中做同样的事情,但是逆转它不起作用。

以下是我的代码:

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日期选择器工作正常但过去的选择器没有显示任何输出。这是什么原因以及解决方案是什么?

3 个答案:

答案 0 :(得分:0)

你应该改变的是改变while循环条件下的比较器,即下面的

while($day < $last_day) {

while($day > $last_day) {

<强>原因

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

答案 1 :(得分:0)

您可以使用此

    $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'));
    }

我确定您可以看到我通过将strtotime('-1 year')添加到您的$day变量

来缩短了开始时间

希望这有帮助

答案 2 :(得分:0)

原因是逻辑无效。将$ day改为$ today只是为了让你看到原因,$ last_day到$ the_day。你可以看到今天的逻辑$&lt; $ the_day没有意义,如果你正在寻找过去,但$ the_day&lt; $ today确实:

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