0

そのため、次の日付の日数の差を取得しようとしています。そのうちの 1 つは機能しますが、もう 1 つは数値がずれています。3 である必要があります。

関数を使用できましたceilが、以下が正しくない理由はまだわかりません。

$checkOut = strtotime('2011-02-16');
$checkIn = strtotime('2011-02-11');
エコー ($checkOut - $checkIn) / (60 * 60 * 24); // => 5
echo floor(($checkOut - $checkIn)/(60*60*24)); // => 5

$checkOut = strtotime('2011-03-14');
$checkIn = strtotime('2011-03-11');
エコー ($checkOut - $checkIn) / (60 * 60 * 24); // => 2.958333333
echo floor(($checkOut - $checkIn)/(60*60*24)); // => 2
4

3 に答える 3

1

php オブジェクト指向のDateTime::diffを使用しないのはなぜですか?

<?php
$datetime1 = new DateTime('2011-03-11');
$datetime2 = new DateTime('2011-03-14');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
于 2011-03-09T22:39:44.513 に答える
0

問題は、サマータイムをまたぐことです。PHP の仕様では、strtotime はエポックからの秒数を返すと書かれていますが、そうではないと思います。

于 2011-03-09T22:41:59.993 に答える
0

その問題にはDateTime::diff ()を使用することをお勧めします。

floor() を使用することで、基本的に次に小さい整数を取得します (コンマの後のすべてを切り取ります)。

于 2011-03-09T22:37:06.843 に答える