我需要获取从当月到倒退11个月的数字列表。
我试过了 -
for($m=0;$m<12;$m++) {
echo date('m', strtotime("-$m months"));
}
但是这种方法存在一个错误/问题,因为strtotime会返回重复的月份。例如对于今天的日期,它将三月返回三月。我想现在使用mktime函数并将$ m作为月份参数传递。如何获得这样的列表......当前月份数为4,因此列表变为....
4, 3, 2, 1, 12, 11, 10, 9, 8, 7, 6, 5.
我如何实现这一目标?
这是我想要实现的目标。
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
更新
我的php版本是5.2和&#34;今天&#34;&#34;日期是2015-04-30。
更新2-
我不明白这个问题是如何与链接问题重复的(由John Conde链接。你需要一个假期伴侣来让你的大脑休息一下。)。我已经看了一下这个问题,并没有解决我的问题。
答案 0 :(得分:0)
我猜问题是二月有28天或29天。 我的解决方案远非防弹,但它可以满足您的需求:
for($m=0;$m< 12;$m++) {
$days = $m * 31;
echo date('M Y', strtotime("-$days days"))."\n";
}
输出:
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
演示:
有关更多信息,请访问PHP.net,了解date()
功能。
答案 1 :(得分:0)
你走了。只需强制它从月初开始检查,而不是当月的当天:
$months = array();
for ($i = 1; $i <= 12; $i++) {
$months[] = date("M Y", strtotime(date('Y-m-01') . " -$i months"));
}
print_r($months);
提供以下输出:
Array
(
[0] => Apr 2015
[1] => Mar 2015
[2] => Feb 2015
[3] => Jan 2015
[4] => Dec 2014
[5] => Nov 2014
[6] => Oct 2014
[7] => Sep 2014
[8] => Aug 2014
[9] => Jul 2014
[10] => Jun 2014
[11] => May 2014
)