-2

我正在尝试使用date.

$year= 2012;
$mon = date( 'F', mktime(0, 0, 0, $month,$year) );

在上面的代码片段中,$month是动态递增的。我用了一个while循环$month++。但它没有给我正确的日期。

例如,假设我$month=5在开始时给了,然后它会递增直到$month=12。那么输出应该是这样的

May
June
July... 

但是,它的输出是:

November
December
January.....

为什么是这样?我在这里做错什么了吗?

4

3 回答 3

6

您忘记了 $date 参数。mktime 的正确语法是

mktime($hour,$minute,$second,$month,$day,$year);

所以在你的例子中 $year 将被视为“日期”

尝试类似的东西

mktime(0,0,0,$month,1,$year);
于 2012-07-31T09:05:21.440 回答
3

有一个错误mktime:应该是mktime(0, 0, 0, $month, 1,$year),因为第 5 个参数是day,但不是year

于 2012-07-31T09:05:38.083 回答
2

您的问题源于以下几行:

$year= 2012;
$mon = date( 'F', mktime(0, 0, 0, $month,$year) );

确切地说来自 mktime 命令。确切的语法是: mktime($hour,$minute,$second,$month,$day,$year);

由于您将 $year 作为第 5 个参数,它被解释为“day”而不是“year”。因此,当您将月份设置为 5 时,您会得到第 5 个月 +2012 天,这意味着 5 月的第一天会增加 2011 天,结果是 11 月。

您应该使用以下行来获得所需的结果:

$mon = date( 'F', mktime(0, 0, 0, $month,1,$year) );

这样您就可以获得所需的月份(并且这一天始终是本月的第一天......所以它不会干扰您的计算。

于 2012-07-31T09:13:27.343 回答