2014-10-29 42 views
0

我有一个脚本,可以让我从下拉列表中选择一个日期到未来一年,所以现在我想在过去一年做同样的事情,但是反转它不行。表单选项日期选择器 - 1年

这里是我的代码:

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

回答

0

你应该改变什么改变比较while循环的条件,即以下

while($day < $last_day) { 

while($day > $last_day) { 

原因

由于$day今天$last_day是为过去1年的日期,($天< $ last_day)条件决不会满足。在每个循环中,从今天开始,您将$ day变量减少一天。所以,你需要做的就是渲染选项标签,直到$ day变量大于$ last_day变量。

+0

是啊,当然!感谢您的指点 – user3177012 2014-10-29 14:50:54

+0

欢迎您!是的,它发生..我认为我去了太多的解释,然后.. – 2014-10-29 15:00:55

0

您可以通过添加strtotime('-1 year')你开始$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')); 
    } 

IM确保您可以看到我减少的开始时间这有助于

0

的原因是逻辑无效。将$ day更改为$今天,以便您可以查看原因,并将$ last_day更改为$ the_day。你可以看到,逻辑$今天< $ the_day没有任何意义,如果你今天找过去,但$ 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')); 
    } 
?>