2011-02-12 78 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