使用PHP Interval Object计算天数差异?

时间:2010-10-14 20:08:35

标签: php

我已经在StackOverflow中看到了一些关于如何计算两个日期之间时间差异的答案。但没有答案在PHP中使用DateTime obejct或Interval Object。我从PHP手册网站获得了以下代码片段:http://www.php.net/manual/en/dateinterval.format.php

<?php

$january = new DateTime('2010-01-01');
$february = new DateTime('2010-02-01');
$interval = $february->diff($january);

// %a will output the total number of days.
echo $interval->format('%a total days')."\n";

// While %d will only output the number of days not already covered by the
// month.
echo $interval->format('%m month, %d days');

?>

但问题是总天数等于6015天,而它应该只有31天。我试图访问Interval对象中的实例变量天。它也显示6015天。但是月和日间隔的实例是正确的。有人可以告诉我为什么吗?

我想用这些物体来计算时间上的差异!

非常感谢

更新:

我认为这只是我的PHP设置问题

3 个答案:

答案 0 :(得分:0)

我运行完全相同的脚本并获得“31天总计”和“1个月,0天”(预期值)。尝试升级您的PHP可能吗?..

答案 1 :(得分:0)

我不确定您使用的是什么版本的PHP,但根据我的经验,我已经养成了一个习惯,即始终将时区设置为date_default_timezone_set('America/Los_Angeles');,其中America/Los_Angeles是您的时区想要使用。我不知道这最终会如何影响日期计算,但我知道如果你尝试在不指定默认时区的情况下进行日期操作,PHP 5.3会对你大喊大叫。

我相信你也可以在你的php.ini中设置一个默认时区 - 我认为默认设置为UTC。

答案 2 :(得分:0)

运行代码......

31 total days
1 month, 0 days

PHP设置问题,也许?