$start_date = strtotime('2011-08-21');
for($i=0 ; $i < 5; $i++)
{
echo "i = $i and ";
$start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+$i);
echo date('Y-m-d',$start_date)."<br /><hr />";
}
i = 0 and 2011-08-21
i = 1 and 2012-08-21
i = 2 and 2014-08-21
i = 3 and 2017-08-21
i = 4 and 2021-08-21
我不明白为什么在2012年之后它没有正确添加。
由于
答案 0 :(得分:2)
如果你想每次增加一年,也许你应该这样做。
for($i=0 ; $i < 5; $i++)
{ echo "i = $i and ";
if($i>0) $start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+1);
echo date('Y-m-d',$start_date)."<br /><hr />";
}
答案 1 :(得分:2)
正常工作。您将在每次迭代时向年份添加递增数字。
i = 0 and 2011-08-21 // 2011 + 0
i = 1 and 2012-08-21 // 2011 + 1
i = 2 and 2014-08-21 // 2012 + 2
i = 3 and 2017-08-21 // 2014 + 3
i = 4 and 2021-08-21 // 2017 + 4
你应该
+1
而不是每次迭代的+$1
$start_date
for($i=0 ; $i < 5; $i++)
{
echo "i = $i and ";
// $new_date holds the updated date without overwriting
$new_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+$i);
echo date('Y-m-d', $new_date)."<br /><hr />";
}
答案 2 :(得分:1)
以下一行
$start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+$i);
应该是
$start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+1);
否则日期的年份将增加1然后是2然后是3的4,因为每次修改开始日期。