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

PHPでは、日付・時刻を扱うクラスとして、DateTimeクラス、DateTimeImmutableクラスがあります。

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

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

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

// 現在の時刻のオブジェクトを作成
$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メソッドでは、加算・減算した日付・時刻の書式を指定します。

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

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

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

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

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

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

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

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

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。