1

2 つの日付の差を計算する関数があります。

function getDateDifference($to, $from, $in) {
$diff = abs($to - $from);

$years = floor($diff / (365 * 60 * 60 * 24));
$months = floor(($diff - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24));
if ($in == "days") {
    return $days;
} else if ($in == "months") {
    return $months;
} else if ($in == "years") {
    return $years;
}

}

パラメータについては、最初に2つの日付を次のように秒に変換します。

checkin = '2012-07-26';
checkout = '2012-07-27';
check_in_date = strtotime(checkin);
check_out_date = strtotime(checkout);

1か月未満の差に関しては、正しい差が得られます。しかし、差が1か月以上ある場合、私は常に差を1として取得しています。誰かが問題を教えてもらえますか。

4

2 に答える 2

2

現在、1か月は常に30 * 60 * 60 * 24秒、別名30日です。

あなたの問題は、私たちが7月にいることであり、30日ではなく31日です。1か月の日数に注意する必要があります。

于 2012-07-26T10:05:25.570 に答える
1

DateTime クラスを利用できます。 http://php.net/manual/en/datetime.diff.php

 $checkin = new DateTime("2012-07-23");
 $checkout = new DateTime("2012-07-27");
 $difference = $checkin->diff($checkout);
 echo "differrence = " . $difference->format('%R%a days');
于 2012-07-26T10:19:15.267 に答える