PHP - 为什么日期之间的差异显示错误的日子?
问题描述:
我还在学习PHP并试图改进PHP编程。所以,我测试了一个显示两个日期之间持续时间的简单代码。我用不同的开始日期和结束日期对它进行测试,直到这一次得到错误的持续时间。PHP - 为什么日期之间的差异显示错误的日子?
代码:
<?php
$d1 = new DateTime('2017-02-20'); // 20 Feb 2017
$d2 = new DateTime('2017-05-12'); // 12 May 2017
$diff = $d2->diff($d1); //excluding end date
echo $diff->y ." years ";
echo $diff->m ." months ";
echo $diff->d ." days";
?>
正确的时间应该为0岁2个月22天。但它显示的错误时间是0年2个月20天。
有人可以向我解释为什么是这样吗?我想知道为什么它变成这样。
答
更正此代码:
$d1 = new DateTime('2017-02-20'); // 20 Feb 2017
$d2 = new DateTime('2017-05-12'); // 12 May 2017
$diff = $d1->diff($d2); //excluding end date
echo $diff->y ." years ";
echo $diff->m ." months ";
echo $diff->d ." days";
始终从更大的日期扣除较少的日期。
答
你应该区分$ D1到D2 $
$d1 = new DateTime('2017-02-20');
$d2 = new DateTime('2017-05-12');
$diff = $d1->diff($d2); // differentiate $d1 (datetime1) to $d2 (datetime2)
echo $diff->y ." years ";
echo $diff->m ." months ";
echo $diff->d ." days";
http://php.net/manual/en/datetime.diff.php
您可以尝试也是程序的方式。
$d1 = date_create('2017-02-20');
$d2 = date_create('2017-05-12');
$diff = date_diff($d1, $d2); // differentiate $d1 (datetime1) to $d2
echo $diff->y ." years ";
echo $diff->m ." months ";
echo $diff->d ." days";
的可能的复制[PHP日期\ _diff功能坏了?](http://stackoverflow.com/questions/42332227/php-date-diff-function-broken) –
28天在二月。 8天至3月1日+12天+ 2个月...似乎对我 – Trent
[如何计算使用PHP的两个日期之间的差异?](http://stackoverflow.com/q/676824/1255289) – miken32