0

次のように、DateTime と diff を使用して、2 つの日付間の日数の差を計算しています。

$data_inceput = '2013-10-01';
$data_sfarsit = '2013-10-31';
$date1 = new DateTime($data_inceput);
$date2 = new DateTime($data_sfarsit);

$nr_zile = $date2->diff($date1)->format("%a");

$nr_zile何らかの理由で 6015 として表示されます。

もし私が`var_dump($date2->diff($date1));

私は得る:

object(DateInterval)#6 (8) {
   ["y"] => int(0)
   ["m"] => int(0)
   ["d"] => int(30)
   ["h"] => int(0)
   ["i"] => int(0)
   ["s"] => int(0)
   ["invert"] => int(1)
   ["days"] => int(6015)

なぜこのように振る舞うのか分かりますか?また、各日付のタイムゾーンを UTC に個別に設定して、同じ結果を得ようとしました。

編集:本番サーバーでテストしましたが、うまく機能します。唯一の問題はローカルApacheサーバーにありますが、php設定は基本的に2つで同じです。

4

2 に答える 2

1

使用できる別の方法:

$data_inceput = strtotime('2013-10-01');
$data_sfarsit = strtotime('2013-10-31');
$daysBetween = round(($data_sfarsit - $data_inceput) / 86400);
于 2013-10-10T09:09:01.290 に答える