我有一个脚本,可以让我从下拉列表中选择一个未来一整年的日期,所以现在我想在过去的一年中做同样的事情,但是逆转它不起作用。
以下是我的代码:
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 :(得分: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'));
}
?>