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行目は、秒を計算しています。
関連の記事