2011-02-12 76 views
3

考慮下面的測試案例:爲什麼DateTime :: diff在這些日期之間返回0天?

$start = new DateTime("2011-02-25"); 
$end = new DateTime("2011-03-25"); 

$interval = $end->diff($start); 


echo "INTERVAL = ".$interval->format("%d"); // Should give me the 
              // interval in days, right? 
echo "START = ".$start->format("Y-m-d"); 
echo "END = ".$end->format("Y-m-d"); 

結果是:

INTERVAL = 0 <---------- WTF???? 
START = 2011-02-25 
END = 2011-03-25 

diff()似乎聲稱,2011年2月25日和2011年3月25日之間的期限爲0天了!

我必須俯視一些東西。但是是什麼?

+0

我也試着轉過頭:`$ interval = $ start-> diff($ end);`得到了相同的結果。 – 2011-02-12 03:04:26

+2

我很驚訝地向你說這個,但請參閱手冊中的示例#3:http://php.net/manual/en/dateinterval.format.php :) – deceze 2011-02-12 03:12:42

回答

7

您需要使用格式代碼'a'd是diff中的天數,而不是淨天數。在dateinterval對象中,days是相應的字段。在你的例子中,你會看到m = 1