我正在尝试使用date
检索月份。
$year= 2012;
$mon = date( 'F', mktime(0, 0, 0, $month,$year) );
在上面的代码段中,$month
是动态递增的。我使用了$month++
的while循环。但它没有给我正确的日期。
例如,假设我在开头给了$month=5
,然后它递增到$month=12
。然后输出应该像
May
June
July...
但是,它的输出是:
November
December
January.....
这是为什么?我在这里做错了吗?
答案 0 :(得分:6)
你忘记了$ date参数。正确的mktime语法是
mktime($hour,$minute,$second,$month,$day,$year);
因此在您的示例中,$ year将被视为“日期”
尝试类似
的内容mktime(0,0,0,$month,1,$year);
答案 1 :(得分:3)
mktime
出现错误:应为mktime(0, 0, 0, $month, 1,$year)
,因为第五个参数为day
,而不是year
答案 2 :(得分:2)
你的问题来自这些方面:
$year= 2012;
$mon = date( 'F', mktime(0, 0, 0, $month,$year) );
准确地说来自mktime命令。确切的语法是:mktime($ hour,$ minute,$ second,$ month,$ day,$ year);
由于您将$ year作为第五个参数,因此将其解释为“day”而不是“year”。因此,当您将月份设置为5时,您将获得5个月+2012天,这意味着5月的第1天会增加2011天,并且会导致当月11日。
您应该使用以下行来获得所需的结果:
$mon = date( 'F', mktime(0, 0, 0, $month,1,$year) );
这样你获得了所需的月份(这一天总是这个月的第一天......所以它不会影响你的计算。