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

时间:2012-07-31 09:00:58

标签: php date

我正在尝试使用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.....
这是为什么?我在这里做错了吗?

3 个答案:

答案 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) );

这样你获得了所需的月份(这一天总是这个月的第一天......所以它不会影响你的计算。