PHP strtotime bug帮助修复

时间:2014-04-29 18:08:02

标签: php strtotime

 $end = strtotime('2011-09-01');
 $start = strtotime('today');

 while($start > $end)
 {
echo date('F Y', $start) . "<br>";

$start = strtotime("-1 month", $start);
 }

结果: 2014年4月 2014年3月 2014年3月 2014年2月 2014年一月 2013年12月 ...等

为什么我要在2014年3月两次? 如果有人可以提供帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

我能够使用DateTime()。从结束日期开始,我从本月的第一天开始。这使得每个月的天数无关紧要。然后,我所要做的就是颠倒日期数组,使其符合您想要的格式。

$start    = new DateTime('2011-09-01');
$end      = new DateTime();
$interval = new DateInterval('P1M');
$period   = new DatePeriod($start, $interval, $end);

$months= array();
foreach ($period as $dt) { 
    $months[] = $dt->format('F Y');
}
$months = array_reverse($months);
echo implode('<br>', $months);

Demo