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
関連の記事