我想在两个月之间找到差异。例如下面,我想要2个月。
$datetime1 = date_create('2017-03-01');
$datetime2 = date_create('2017-04-30');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%m months');
echo $interval->format('%d days');
这给了我2个月零1天。
答案 0 :(得分:2)
您收到错误结果的原因很可能是因为您没有设置默认时区,一个用于"您的"时区。
添加例如:
date_default_timezone_set('America/New_York');
返回了正确的时差,而没有使用它返回了你现在得到的东西。
将其用于您自己的时区,或将其设置在您的系统文件中。
来自手册http://php.net/manual/en/datetime.diff.php"用户贡献说明":
"当使用datediff确保你的时区是正确的时候,对于我在Windows 7 64位上,当时区错误时我表现得非常奇怪(我现在正在比较数据库中的时间和照片中的exif元数据)。例如:date_default_timezone_set(' Europe / Oslo');"
并完成剩余的"用户贡献笔记"。
RiggsFolly给出的评论中的相关链接:
可以在这里发挥作用。
修改:
在注意到OP接受这个答案之后,从RiggsFolly的评论中得到的还是:
date_default_timezone_set('UTC');
我称之为合资企业,我不能完全赞同这一点。