PHP

[PHP] DateTime型のmodifyメソッドでハマった話

はじめに

DateTime型のmodify()メソッドの認識が不十分だったので自分用メモ。

コード

$date = new \DateTime('2018-05-31');

echo $date->modify("+1 month")->format("Y-m-d");             // 2018-07-01
echo $date->modify("+2 month")->format("Y-m-d");             // 2018-07-31
echo $date->modify("+3 month")->format("Y-m-d");             // 2018-08-31

echo $date->modify("-1 month")->format("Y-m-d");             // 2018-05-01
echo $date->modify("-2 month")->format("Y-m-d");             // 2018-03-31
echo $date->modify("-3 month")->format("Y-m-d");             // 2018-03-03

echo $date->modify("last day of +1 month")->format("Y-m-d"); // 2018-06-30
echo $date->modify("last day of +2 month")->format("Y-m-d"); // 2018-07-31
echo $date->modify("last day of +3 month")->format("Y-m-d"); // 2018-08-31

echo $date->modify("last day of -1 month")->format("Y-m-d"); // 2018-04-30
echo $date->modify("last day of -2 month")->format("Y-m-d"); // 2018-03-31
echo $date->modify("last day of -3 month")->format("Y-m-d"); // 2018-02-28