我正在尝试使用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.....
为什么会这样?我在这里做错什么了吗?
您忘记了$date参数。mktime的正确语法是
mktime($hour,$minute,$second,$month,$day,$year);
因此,在您的示例中,$year将被视为"日期"
试试
mktime(0,0,0,$month,1,$year);
mktime
中有一个错误:应该是mktime(0, 0, 0, $month, 1,$year)
,因为第五个参数是day
,但不是year
您的问题源于以下几行:
$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) );
这样你就可以得到想要的月份(而且日期总是这个月的第一天……所以它不会干扰你的计算。