缺少少于31天的月份(strtotime)

时间:2017-08-31 11:05:01

标签: php

我想输出过去13个月,从上个月开始。

我的代码:

for($i=1;$i<=(13);$i++)
{
   echo date("m",strtotime("-".$i." month"));
}

它很有效,但今天(31.)它看起来像这样 07 07 05 05 03 03 01 12 12 10 10 08 07

我错过了几个月,没有31天。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用DateTime对象! ; - )

$date = new DateTime('2017-08-31');

for ($i=1; $i<=(13); $i++) {
    $tmpDate = clone $date;
    $tmpDate->modify('last day of -' . $i . ' month');
    echo $tmpDate->format('Y-m-d') . "\n";    
}

诀窍是复制变量,以便减少var $ i的月份次数。使用&#34; -x month的最后一天&#34;总是选择那个月的最后一天。 参考:https://secure.php.net/manual/en/class.datetime.php