【PHP】日付・時刻を加算、減算して表示する例|modifyメソッド

PHPでは、日付・時刻を表すことができるDateTimeクラス、DateTimeImmutableクラスがあります。

今回は、そのクラスを使い日付・時刻を加算、減算する例となります。なお、例ではDateTimeImmutableクラスを使用しています。

日付・時刻を加算・減算する例

以下、作成した現在の時刻のオブジェクトから、それぞれ日付・時刻を加算・減算して出力する例となります。

<?php
// 現在の時刻のオブジェクトを作成
$date = new DateTimeImmutable();

// 10日後の日付を取得
echo $date->modify('+10 day')->format('Y年m月d日');
// 1週間後の日付を取得
echo $date->modify('+1 week')->format('Y年m月d日');
// 1ヶ月前の日付を取得
echo $date->modify('-1 month')->format('Y年m月d日');
// 1年前の日付を取得
echo $date->modify('-1 year')->format('Y年m月d日');

// 30分後の時刻を取得
echo $date->modify('+30 min')->format('Y年m月d日H時i分');
// 1時間前の時刻を取得
echo $date->modify('-1 hour')->format('Y年m月d日H時i分');
?>

modifyメソッドについて

DateTimeクラス、DateTimeImmutableクラスのオブジェクトから、加算・減算をするにはmodifyメソッドを使用します。

modifyメソッドでは、引数に加算、減算する日付・時刻の書式を指定します。そして、formatメソッドを使用し、加算、減算した日付・時刻を出力します。

modifyメソッドの引数に指定する日付・時刻の書式は、PHPで解釈可能な書式を指定する必要があります。上記例で使用した以外の日付・時刻の書式については、以下のリンク先を参考にしてみてください。

PHP: サポートする日付と時刻の書式 - Manual

monthを使用した月の加算・減算について

modifyメソッドの引数に、+1 month、-1 monthなどで月を指定した場合、その途中に経過する月の日数を使って結果を算出します。 

例えば、以下のように2001年1月31日からmodify('+1 month')で月を加算する場合、1月の日数の31日を、1月31日から加算して2001年3月3日の値を返します。

<?php
$date = new DateTimeImmutable('2001/01/31');
echo $date->modify('+1 month')->format('Y年m月d日');
?>

もし、2001年1月31日から、次の月末の2001年2月28日を取得したい場合には、以下のような例があります。

<?php
$date = new DateTimeImmutable('2001/01/31');
echo $date->modify('last day of +1 month')->format('Y年m月d日');
?>

参照サイト・書籍

コメントまたはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。Twitterで返信する場合はコチラから。