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
print $date3->format('%a'); // 26

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

2,3行目は、DateTimeクラスのインスタンスを生成しています。
5行目以降は、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:30:10');

$date3 = $date1->diff($date2);

echo $date3->days * 24 + $date3->h; // 51 (時間)
// 2日*24h (48h)  +        3h = 51

echo $date3->days * 24 * 60 + $date3->h * 60 + $date3->i; // 3090(分)
// 2日*24h*60m (2880m) +    3h*60m + 30m (210m)= 3090

echo $date3->days * 24 * 60 * 60 + $date3->h * 60 * 60
  + $date3->i * 60 + $date3->s; //185410(秒)
// 2日*24h*60m*60s  +  3h*60m*60s + 30m*60s +10s = 185410

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

7行目は、時間を計算しています。
10行目は、分を計算しています。
13,14行目は、秒を計算しています。

関連の記事

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

△上に戻る