2011-04-29 38 views
1

我得到了包含日期爲我的當前顯示的商品檔案,看起來像這樣的數組:PHP日期/ mktime返回奇怪的結果

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

我真的無法繞過它。我在月&年的日期做錯了什麼?謝謝!

+0

那麼月的一天是0? – Phil 2011-04-29 02:41:02

回答

3

從php.net:

實例#3最後下個月的日

任何給定月份的最後一天可以 表達作爲下一個 月份的「0」天,而不是-1天。

因此,輸入的日期或月份將爲您提供前一個月或一年。

嘗試把

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

將它設置爲(int)1而不是零是一個完美的提示。謝謝! – kaiser 2011-04-29 03:04:21

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' 
+1

不是解決方案,但更好閱讀。 +1,謝謝! – kaiser 2011-04-29 03:04:43