2016-10-11 27 views
0

我想在PHP的日期-2個月。 大多數情況下,結果是好的,但是對於一個日期,結果是錯誤的。PHP日期時間返回沒有得到結果

$d = 1409436000; // 31-8-2014 

$d1 = new DateTime(date("d-m-Y", $d)); 

$d1->modify("-2 month"); 

echo $d1->format("d-m-Y"); 

// expected : 30-06-2014 
// got  : 01-07-2014 

我目前的PHP版本爲:5.6.23-0 + deb8u1 我沒有做出任何時區配置。

所以:爲什麼我得到這個結果?這是因爲8月份& 7月有31天?或者phpversion的當前錯誤?時區?

感謝=)

+1

爲我工作。我得到了30-06-2014 –

+0

你可以試試:'$ d = 1409436000; // 31-8-2014 $ d1 = new DateTime(); $ d1-> setTimestamp($ d); $ d1->修改(「 - 2個月」); echo $ d1-> format(「d-m-Y」);' –

+0

我其實也得到了'01-07-2014'。我正在運行PHP 7. –

回答

0

根據評論和鏈接,我解決我的問題是這樣的:

$d = 1409436000; // 31-8-2014 

$d1 = strtotime("first day of this month", $d); 
$d1 = strtotime("-2 month", $d1); 
$d1 = strtotime("last day of this month", $d1); 

echo date("d-m-Y", $d1); 
  • 的辦法,以確保你有正確的結果採取 你的第一天是約會。
  • 製作你需要的東西。
  • 從當月回來的最後一天。

問題是: 我試圖得到「31/08/2014 -2月」女巫等於「31/06/2014」。

31/06/2014 =>此日期不存在,PHP將其轉換爲「2014年1月7日」