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";

始终从较大的日期扣除到较小的日期。

你应该区分$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";

最新更新