我还在学习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";
始终从较大的日期扣除到较小的日期。
你应该区分$d 1到$d 2
$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";