PHP date/mktime返回奇怪的结果


php date/mktime returning strange result

我得到了一个数组,它包含我当前显示的文章存档的日期,看起来像这样:

<?php    
// Code:
echo '<pre>'; print_r($date_result); echo '</pre>';
?>
// output:
Array
(
    [0] => 2008
    [1] => 03
    [2] => 11
)

然后尝试构建结果以输出此存档页的标题:

$name = date( 'l', mktime( 0, 0, 0, $date[1], $date[2], $date[0] ) ); // works

但是当我试图做同样的月&年份我总是在给定日期前一个月/一年:

// Month
$name = date( 'M', mktime( 0, 0, 0, $date[1], 0, 0, 0 ) ); // input: eg. (int) 03 - output 'February'
// Year
$name = date( 'Y', mktime( 0, 0, 0, 0, 0, $date[0] ) ); // input: eg. (int) 2008 - output '2007'

我真的无法回避它。我用month做错了什么?年日期吗?谢谢!

From php.net:

示例#3下个月的最后一天

任意给定月份的最后一天可以为表示为下一个"0"天月,而不是-1天。

因此,输入0的日或月将给出前一个月或前一年。

试着放

$name = date( 'M', mktime( 0, 0, 0, 1, $date[1], 1) );

我会这样做:

$time = mktime( 0, 0, 0, $date[1], $date[2], $date[0] );
// Month
$month = date( 'M', $time ); // Outputs 'Mar' (March)
// Year
$year = date( 'Y', $time ); // Outputs '2008'