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');
我会称之为合资企业,我不能完全相信这一点。
我想知道两个月之间的差异。例如下面,我想要 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');
我会称之为合资企业,我不能完全相信这一点。