3

2 つの日付を減算して、2 つの日付間の日数を取得できる PHP コードを作成しようとしています。私が思いついたコードを以下に示します

<?php
$c_date = date("Y-m-d");
//Subtracting two dates.
$date1 = new DateTime($d_date); //$d_date gets its value from database which i havent shown here
$date2 = new DateTime($c_date);
$interval = $date1->diff($date2);
echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days ";
?>

上記のコードは動作しますが、自分のニーズに合わせて使用​​することはできません。配達日 ($d_date) が現在の日付から 5 日以内かどうかを調べ、その場合は値 1 を返す必要があります。

その場合$c_date = "2013-09-24"$d_date = "2013-09-30"私は1を返します。しかし、問題は、配達日が「2013-09-19」であると言うと、配達日がかなり過ぎており、0を返す必要がありますが、現在のコードでは日の差になりますまだ5なので、間違っている1を返します。

これを克服する方法についてのアイデアはありますか?

4

5 に答える 5

2

これを試して:

$interval = $date2->diff($date1);
$returnValue = $interval->d <= 5 && !$interval->invert;

$returnValuetrueまたはfalse(ブール型)になります。

編集:
正確には-それを評価するか、1または0行うことができます

$returnValue = (int) ($interval->d <= 5 && !$interval->invert);

編集 #2:
$interval->invertの差が負(1)か正(0)かを示すプロパティです。紛らわしいです-メソッドでの計算は常に2番目のオブジェクト(メソッドの引数)から最初のオブジェクト(メソッドの呼び出し先)を引いたものです。$date2$date1diff

$date1 > $date2

それなら本当です

$date1->diff($date2)

は負です (ショートカットで)。

于 2013-09-24T20:55:46.140 に答える