- PHP
- 2017-10-24 - 更新:2018-08-21
この記事は最終更新日から1年以上経過しています。
date関数とstrtotime関数で日付の加算・減算ができます。
同じようにDateTimeクラス・DateIntervalクラスを使っても実現できます。
まずはオブジェクトを生成します。
$date = new DateTime('2000-01-01');
10時間と30秒を加算してみます。
$date->add(new DateInterval('PT10H30S'));
表示書式を指定して出力します。
echo $date->format('Y-m-d H:i:s');
出力は以下のようになります。
2000-01-01 10:00:30
今度は7年、5ヶ月、4日、4時間、3分、2秒を加算してみます。
$date->add(new DateInterval('P7Y5M4DT4H3M2S'));
表示書式を指定して出力します。
echo $date->format('Y-m-d H:i:s');
出力は以下のようになります。
2007-06-05 04:03:02
月を加算するときの注意点は、「31日を加算する」というところです。
例えば次のような例では
$date = new DateTime('2000-12-31'); $interval = new DateInterval('P1M'); $date->add($interval); echo $date->format('Y-m-d') . "\n"; $date->add($interval); echo $date->format('Y-m-d') . "\n";
出力は以下のようになります。
2001-01-31 2001-03-03
次に減算してみましょう。
10時間と30秒を減算してみます。
$date->sub(new DateInterval('PT10H30S')); echo $date->format('Y-m-d') . "\n";
出力は以下のようになります。
1999-12-31 13:59:30
DateIntervalの書式について
頭の「P」はperiod(期間)という意味で、続けて「年月日(7Y5M4D)」と指定します。
時間を表す場合は頭に「T」を付けて「時分秒(4H3M2S)」と指定します。
週も指定することができます。その場合は「2W」と指定します。
2,581 views