2011-05-18 257 views
1

我遇到了一些不尋常的事情。由於某些原因,添加日期間隔只需要幾分鐘就可以增加67年。PHP日期時間問題

$wTime = new DateTime("2011-05-17 01:54:56 +0000"); 
echo $wTime->format("d/m/Y H:i:s\n"); 
$wTime->add(new DateInterval("P810M")); 
echo $wTime->format("d/m/Y H:i:s"); 

結果是:

17/05/2011 01:54:56 
17/11/2078 01:54:56 

我不能看到我在做什麼錯事。這是DateTime對象中的錯誤,還是因爲我的代碼有問題?過去我遇到了一些惱人的bug。我正在運行Mac OS X上的源代碼構建的PHP(5.3.6)的最新版本。10.6

回答

0

Check the docs,您正在添加810個月(〜67年)。嘗試PT810M

+0

謝謝,這固定它。我不敢相信我寫了一篇關於這樣一個愚蠢的錯誤的文章。多可恥。 – Yoshi 2011-05-18 02:55:45

+0

不用擔心。我承認,PHP在月份和分鐘上都有'M'這個事實非常糟糕。看起來像'I'是分鐘格式的替代品。但是從文檔中,'T'是*記錄的*方式來指定'M'作爲分鐘。 – 2011-05-18 13:41:47

1

M爲期數月,所以這增加了810個月(67.5年)。分鐘使用iI

$wTime->add(new DateInterval("P810I")); 

PHP manual page for DateInterval具有公認格式的完整列表。

0

您實際上增加了810個月而不是分鐘。嘗試 -

$wTime->add(new DateInterval("P810I")); 

而且貌似PHP documentation是錯誤的。但是,如果您查看該頁面上的示例輸出,您將會意識到分鐘的代碼是'我',而不是'm'。

+0

謝謝。我至少可以歸咎於PHP文檔部分是因爲我的愚蠢:/ – Yoshi 2011-05-18 02:57:23

0

您添加了幾個月,而不是幾分鐘。嘗試i而不是m