php中几个月的两个日期之间的差异

时间:2017-03-15 11:40:26

标签: php date timezone date-difference

我想在两个月之间找到差异。例如下面,我想要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天。

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');

我称之为合资企业,我不能完全赞同这一点。