PHP 日時の差分を求める(DateTime)

PHPの日時の差分を求めるサンプルです。

目次

サンプル 日の差分を求める
  時間の差分を求める

日の差分を求める

public DateTime::diff ( DateTimeInterface $targetObject [, bool $absolute = FALSE ] ) : DateInterval

日の差分を求めるサンプルです。

<?php

$date1 = new DateTime('2020-07-10');
$date2 = new DateTime('2020-08-05');

$date3 = $date1->diff($date2);
print $date3->format('%R%a'); // +26

$date4 = $date2->diff($date1);
print $date4->format('%R%a'); // -26

?>

3,4行目は、DateTimeクラスのインスタンスを生成しています。
6,9行目は、diffメソッドで日数の差分を計算しています。

%Rは、正の値の場合はプラス(+)で負の値の場合はマイナス(-)がつきます。
%aは日数が表示されます。

以下は、PHPマニュアルのDateIntervalクラスのformatメソッドのリンクです。
https://www.php.net/manual/ja/dateinterval.format.php

時間の差分を求める

時間の差分を求めるサンプルです。

<?php

$date1 = new DateTime('2020-01-01 10:00:00');
$date2 = new DateTime('2020-01-03 13:00:00');

$date3 = $date1->diff($date2);
echo $date3->days*24 + $date3->h; // 51
// 2*24 = 48  +        3 = 51

$date1 = new DateTime('2020-01-01 10:00:00');
$date2 = new DateTime('2020-01-03 13:30:00');

$date3 = $date1->diff($date2);
echo $date3->days*24*60 + $date3->h*60 + $date3->i; // 3090
// 2*24*60= 2880 +        3*60=180 +     30 = 3090
?>

3,4行目は、DateTimeクラスのインスタンスを生成しています。
6,13行目は、diffメソッドで日時の差分を計算しています。

7行目は、daysの2*24時間=48と、3時間の合計で51時間が表示されます。
ここでのdaysは、開始日と終了日の間の日数です。

9行目は、daysの2*24時間*60分=2880と、3*60分=180と30分の合計で3090分を算出しています。

以下は、PHPマニュアルのDateIntervalクラスのformatメソッドのリンクです。
https://www.php.net/manual/ja/dateinterval.format.php

関連の記事

PHP 現在日時の取得と表示形式(DateTime)
PHP 日時を計算するサンプル(加算と減算)

△上に戻る