2017-04-04 18 views
0

私はまだPHPを学んでおり、PHPプログラミングを改善しようとしています。だから、私は2つの日付の間の期間を示す簡単なコードをテストしています。私は、これが間違った期間を得るまで、異なる開始日と終了日でテストします。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"; 
?> 

正しい期間は2ヶ月22日0年になるはずでした。しかし、それは0年2ヶ月の間違った期間を表示しました20日

なぜ誰かが私に説明することができますか?私はそれがなぜそうなったのかを知りたい。

+0

の可能性のある重複した[PHP日の\ _diff機能が壊れた?](http://stackoverflow.com/questions/42332227/php-date-diff-function-broken) –

+5

28日2月インチ3日から8日間+ 12日+ 2ヶ月...私には右のように見える – Trent

+0

[PHPを使って2つの日付の違いを計算するにはどうすればよいですか?](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

あなたはまた、手続きの方法を試すことができます$ 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を区別すべきです。

$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"; 
関連する問題