我还在学习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天。
有人可以向我解释为什么会这样吗?我想知道它变成这样的原因是什么。
答案 0 :(得分:0)
在此更正代码:
$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";
始终从更长的日期到更短的日期扣除。
答案 1 :(得分:0)
您应该将$ 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";