- PHP
-
2019-09-10
この記事は最終更新日から1年以上経過しています。
以前、PHPでの日付の加算・減算についてご紹介しました。
その時の記事はこちら↓
日付の加算・減算 DateTimeクラス
その際、月の加減については31日が加減されると記載しました。
例えば12月31日に2ヶ月を加算した場合は、翌年の3月3日になります。
今回はそのような事態にならない回避方法をご紹介します。
1 | // 基準とする日付のオブジェクトを生成する |
2 | $myDate = new DateTime( "2018-12-31" ); |
3 |
4 | // 新規日付オブジェクトを生成 |
5 | $newDate = new DateTime(); |
6 |
7 | // 2ヶ月後の末日を取得 |
8 | $newDate ->setDate( $myDate ->format( "Y" ), $myDate ->format( "n" ) + 2 + 1, 0); |
※日付に「0」を指定することで前月の末日を取得することができます。
3ヶ月前の末日を取得する
1 | // 2ヶ月を加算する |
2 | $myDate ->add( new DateInterval( "P2M" )); |
3 |
4 | echo $myDate ->format( "Y-m-d" ). "\n" ; |
5 |
6 | echo $newDate ->format( "Y-m-d" ). "\n" ; |
ここでの出力結果
1 | 2019-03-03 |
2 | 2019-02-28 |
1 | // 基準日オブジェクトと2ヶ月後末日との差を求める |
2 | $result = $myDate ->diff( $newDate ); |
3 |
4 | //$resultには日付の間隔を表すDateIntervalオブジェクトが返されます。 |
5 |
6 | if ( $result ->invert == 1) { //間隔が負の数になっている場合は 1、そうでない場合は 0 |
7 |
8 | echo "newDate\n" ; |
9 | echo $newDate ->format( "Y-m-d" ); |
10 |
11 | } else { |
12 |
13 | echo "myDate\n" ; |
14 | echo $myDate ->format( "Y-m-d" ); |
15 |
16 | } |
出力結果は以下のようになります。
1 | newDate |
2 | 2019-02-28 |
この記事がお役に立ちましたらシェアお願いします

1,282 views