如何从PHP DateTime :: diff获取聚合天数?

时间:2010-03-25 20:49:31

标签: php datetime

$now = new DateTime('now');
$tomorrow = new DateTime('tomorrow');
$next_year = new DateTime('+1 year');

echo "<pre>";
print_r($now->diff($tomorrow));
print_r($now->diff($next_year));
echo "</pre>";

DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 10
    [i] => 17
    [s] => 14
    [invert] => 0
    [days] => 6015
)

DateInterval Object
(
    [y] => 1
    [m] => 0
    [d] => 0
    [h] => 0
    [i] => 0
    [s] => 0
    [invert] => 0
    [days] => 6015
)

为什么'天'显示6015的任何想法?为什么不显示总天数? 1年的差异对我来说没有任何意义,因为几个月的天数不同。

5 个答案:

答案 0 :(得分:6)

更合适的错误报告是#51184,它关注的是Windows报告6015天的问题(非Windows显示正常)。

目前尚未就#49778(处理不同问题)的修复是否会影响此问题或问题是否仍然存在提供反馈。如果这里的任何人都可以看一看并提供一些反馈,那将是非常友好的。

答案 1 :(得分:2)

请升级到最新的php。此错误仅发生在php 5.3 VC6上。

答案 2 :(得分:0)

$now = new DateTime('now');

应该是

$now = new DateTime(''2010-01-01 00:00:00'');

手册中的更多内容 http://nl3.php.net/manual/en/datetime.diff.php

答案 3 :(得分:0)

好的,看起来http://bugs.php.net/bug.php?id=49778就是问题所在。

答案 4 :(得分:0)

它是一个错误 http://bugs.php.net/bug.php?id=49778

  

感谢您提供错误报告。

     

使用。创建DateInterval时确实没有设置天数   构造函数。这种复杂情况是不可能的   确定指定月份或年份的天数,因为   这些长度各不相同。可以填写一些日期字段   案件并在其他案件中保留0。无论如何,都应该记录在案   日期字段并不总是可用。