使用mktime()获取月份时出错


Error in getting the month with mktime()

我正在尝试使用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) );

这样你就可以得到想要的月份(而且日期总是这个月的第一天……所以它不会干扰你的计算。