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秒');