php date / mktime返回奇怪的结果

时间:2011-04-29 02:34:44

标签: php date

我有一个数组,其中包含我当前显示的文章档案的日期,如下所示:

<?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'

我真的无法绕过它。月份和时间我做错了什么年份?谢谢!

2 个答案:

答案 0 :(得分:3)

来自php.net:

  

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

     

任何一个月的最后一天都可以   表示为下一天的“0”日   月,不是-1天。

因此输入的日期或月份将为您提供前一个月或一年。

尝试放

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

答案 1 :(得分:2)

我会这样做:

$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'