我想用过去 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');
}
演示