php 中两个日期之间的月差

Difference between two dates in months in php

我想知道两个月之间的差异。例如下面,我想要 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 天的时间。

您得到错误结果的原因很可能是因为您没有设置默认时区,一个用于 "your" 时区。

加入并举例:

date_default_timezone_set('America/New_York');

返回了正确的时差,而没有使用它返回了你目前得到的。

使用您自己的时区,或在您的系统文件中设置它。

来自 "User Contributed Notes" 下的手册 http://php.net/manual/en/datetime.diff.php

"When using datediff make sure your time zone is correct, for me on Windows 7 64 bit it behaved very strange when timezone was wrong (I was comparing now against time in database and exif metadata in photos). For example: date_default_timezone_set('Europe/Oslo');"

并完成 "User Contributed Notes" 的其余部分。

  • 另一个可能的原因是服务器的位置与 "earth" 上的 "your" 位置不同。

RiggsFolly 给出的评论中的相关 link:

  • php date and daylight savings time confusion

这可能在这里发挥作用。


编辑:

注意到 OP 接受了这个答案后,从 RiggsFolly 的评论中还添加了:

date_default_timezone_set('UTC');

我会称之为合资企业,我不能完全相信这一点。