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