4

我目前面临需要尽快解决的问题。

我正在尝试使用以下代码列出当年(2012 年)的所有月份:

for ($m=1; $m<=12; $m++) {
     $month = date('F', mktime(0,0,0,$m));
     echo $month. '<br>';
     }

但我得到以下意外输出:

一月 三月 三月 五月 五月 七月 七月 八月 十月 十月 十二月 十二月

我做错了什么请帮忙!!!

4

5 回答 5

35

试试这个:

for ($m=1; $m<=12; $m++) {
     $month = date('F', mktime(0,0,0,$m, 1, date('Y')));
     echo $month. '<br>';
     }
于 2012-05-31T07:50:43.867 回答
10

每年的月份都是一样的

$array = array("January", "February",.....);
for ($m=0; $m<12; $m++) {
     echo $array[$m]. '<br>';
     }
于 2012-05-31T07:57:35.497 回答
6

我想你应该以这种方式循环它。

for($i = 1 ; $i <= 12; $i++)
{
 echo date("F",strtotime(date("Y")."-".$i."-01"));
 echo "<br/>";
}

或者在您的情况下,您想使用 mktime()

for($i = 1 ; $i <= 12; $i++)
{
 echo date("F",mktime(0,0,0,$i,1,date("Y")));
 echo "<br/>";
}
于 2012-05-31T09:08:49.413 回答
5

设置daymktime()1否则执行转换:30.2.2012 = 1.3.2012

$month = date('F', mktime(0,0,0,$m,1));
于 2012-05-31T07:54:00.990 回答
3

注意本地化。

你也可以使用这个

setlocale(LC_TIME, 'it_IT');
for($m=1;$m<=12;$m++){
  echo strftime("%B", mktime(0, 0, 0, $m, 12));
}

更改函数 setlocale() 上的参数,您可以显示本地化文本。

setlocale 代码列表

于 2016-07-04T11:23:23.813 回答