Datetime diff返回奇怪的输出

时间:2013-10-10 08:39:08

标签: php datetime

我正在使用DateTime和diff来计算两个日期之间的天数差异,如下所示:

$data_inceput = '2013-10-01';
$data_sfarsit = '2013-10-31';
$date1 = new DateTime($data_inceput);
$date2 = new DateTime($data_sfarsit);

$nr_zile = $date2->diff($date1)->format("%a");
出于某些原因,

$nr_zile以6015出现。

如果我`var_dump($date2->diff($date1));

我得到:

object(DateInterval)#6 (8) {
   ["y"] => int(0)
   ["m"] => int(0)
   ["d"] => int(30)
   ["h"] => int(0)
   ["i"] => int(0)
   ["s"] => int(0)
   ["invert"] => int(1)
   ["days"] => int(6015)

知道为什么它会这样表现吗?我还尝试将时区分别设置为UTC到每个日期,并获得相同的结果。

编辑:我在生产服务器上进行了测试,效果很好,唯一的问题是在本地apache服务器上,但两者之间的php设置基本相同。

2 个答案:

答案 0 :(得分:2)

这是Windows https://bugs.php.net/bug.php?id=51184

的问题

升级到最新的php版本或使用任何替代解决方案。

答案 1 :(得分:1)

您可以使用的替代方式:

$data_inceput = strtotime('2013-10-01');
$data_sfarsit = strtotime('2013-10-31');
$daysBetween = round(($data_sfarsit - $data_inceput) / 86400);