如何使用 PHP DateTime 列出最近 N 个月



我想用过去 5 个月(包括当月)填充选择输入。因此,在 09/04/2014 上,选项应如下所示:

April 2014
March 2014
February 2014
January 2014
December 2013

我的第一个PHP日期时间解决方案似乎有效:

for ($i = 0; $i < 5; $i++) {
 $date = new DateTime($i.' months ago');
 echo $date->format('F Y'); //populate select input
}

但实际上它不处理边缘情况。例如,在 2014 年 3 月 31 日,它产生:

March 2014
March 2014
January 2014
December 2013
December 2013

使用 PHP 日期时间列出过去 10 个月的正确方法是什么?

$date = new DateTime("2014/03/31");
for ($i = 0; $i <= 9; $i++) {
    $date->modify("-1 month");
    echo $date->format('F Y'); //populate select input
}

你得到的 2 个月是一样的,因为当你从日期减去 1 个月时,它的天数比上个月多。示例:当您从 1 中减去 31.3 个月时。你会得到 3.3。(同月),而不是 28.2。如您所料...

我的建议是获取本月的第一天,然后按照您的逻辑进行操作:

$dt = new DateTime('first day of this month');
for ($i = 1; $i <= 10; $i++) {
    echo $dt->format('F Y'), "n";
    $dt->modify('-1 month');
}

演示

相关内容

  • 没有找到相关文章

最新更新