我想从今天开始列出12个月。 几个月后,他们失踪了......
$i = 12;
while ($i > 0) {
$ym = date('Y-m', strtotime("-$i month"));
$yms [$ym] = $ym;
$i--;
}
print_r($yms);
答案 0 :(得分:2)
您忘记在ym
内提供当前strtotime
。考虑这个例子:
$yms = array();
$now = date('Y-m');
for($x = 12; $x >= 1; $x--) {
$ym = date('Y-m', strtotime($now . " -$x month"));
$yms[$ym] = $ym;
}
echo "<pre>";
print_r($yms);
echo "</pre>";
示例输出:
Array
(
[2013-05] => 2013-05
[2013-06] => 2013-06
[2013-07] => 2013-07
[2013-08] => 2013-08
[2013-09] => 2013-09
[2013-10] => 2013-10
[2013-11] => 2013-11
[2013-12] => 2013-12
[2014-01] => 2014-01
[2014-02] => 2014-02
[2014-03] => 2014-03
[2014-04] => 2014-04
)
答案 1 :(得分:0)
您希望从当月开始明确地开始。由于我们目前在31日,你将错过任何少于31天的月份。
<?php
$i = 12;
while ($i > 0) {
$ym = @date('Y-m', strtotime(date('Y-m-01') . " -$i month"));
$yms [$ym] = $ym;
$i--;
}
print_r($yms);
?>
答案 2 :(得分:0)
使用Datetime和DateInterval
<?php
$t = new Datetime();
$interval = new DateInterval("P1M");
for($i=0;$i<12;$i++){
echo $t->sub($interval)->format('Y-m')."\n";
}