PHP入門 DateTimeクラス 日付/時刻値の差分を取得する(diffメソッド)

diffメソッドで日付/時刻値の差を求めることができます。

構文:diffメソッド

DateTime::diff(DateTimeInterface $targetObject [, bool $absolute = false]): DateInterval|false
$targetObject差分を求める日付/時刻値
$absolute差の絶対値を返すか

diffメソッドの戻り値は、DateIntervalオブジェクトです。DateIntervalオブジェクトの内容は、formatメソッドで取得します。

構文:formatメソッド

DateInterval::format(string $format): string
$format書式文字列

書式文字列には、「書式文字列で利用可能な記述子」を含めることができます。DateTimeクラスのformatメソッドと考え方は同じですが、利用できる記述子は異なります。

書式文字列で利用可能な記述子

記述子概要
%Y、%y
%M、%m
%D、%d
%a総日数
%H、%h時間
%I、%i
%S、%s
%F、%fマイクロ秒
%R、%r負数は「-」、整数は「+」(%rでは整数は空文字)

記述子の大文字/小文字の違いは、結果が1桁の場合です(Fとfは6桁未満の場合)。小文字記述子はそのままの数値を返しますが、大文字記述子は先頭にゼロを補った結果を返します。また、引数$absoluteをtrueに設定した場合、diffメソッドは日付/時刻値の絶対差を求めます。つまり両者の大小を意識しないので、$R、%rは常に「+」となります。

<?php
$dt1 = new DateTime('2022/01/01 10:10:00');
$dt2 = new DateTime('2024/01/01 10:10:00');
$interval = $dt1->diff($dt2,true);
print $interval->format('%Y年%M月%d日 %H時%I分%S秒');
実行結果
実行結果