2017-04-04 84 views
0

我還在學習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天

有人可以向我解釋爲什麼是這樣嗎?我想知道爲什麼它變成這樣。

+0

的可能的複製[PHP日期\ _diff功能壞了?](http://stackoverflow.com/questions/42332227/php-date-diff-function-broken) –

+5

28天在二月。 8天至3月1日+12天+ 2個月...似乎對我 – Trent

+0

[如何計算使用PHP的兩個日期之間的差異?](http://stackoverflow.com/q/676824/1255289) – miken32

回答

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

始終從更大的日期扣除較少的日期。

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