提问人:Pekka 提问时间:2/12/2011 更新时间:2/12/2011 访问量:2086
为什么 DateTime::d iff 在这些日期之间返回 0 天?
Why does DateTime::diff return 0 days between these dates?
问:
请考虑以下测试用例:
$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 天!
我一定忽略了什么。但是呢?
答:
9赞
Foo Bah
2/12/2011
#1
您需要使用格式代码。 是差异中的天数,而不是净天数。在 DateInterval 对象中,是相应的字段。在您的示例中,您将看到'a'
d
days
m = 1
评论
0赞
Pekka
2/12/2011
哎呀。我不明白。谢谢!(5分钟内即可接受)
0赞
vicenteherrera
9/1/2015
看了这个问题一个多小时......感谢您的解决方案!
评论
$interval = $start->diff($end);
d
'%m month, %d days'
→1 month, 0 days