0

我正在使用 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 设置基本相同。

4

2 回答 2

2

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

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

于 2013-10-10T09:02:34.777 回答
1

您可以使用的替代方式:

$data_inceput = strtotime('2013-10-01');
$data_sfarsit = strtotime('2013-10-31');
$daysBetween = round(($data_sfarsit - $data_inceput) / 86400);
于 2013-10-10T09:09:01.290 回答