PHPのDateTimeクラスの -1 monthに振り回されたでござるの巻
とても便利なDateTimeクラスちゃん
modifyで-1 weekとか-1 dayとか文章ぽく指定して日付を変更できるので大活躍なのですが
$day = new DateTime('2009-03-31'); $day->modify('-1 month'); echo $day->format('Y-m-d');
なんてやっても返ってくるのは2009-03-03です。
(3、5、7、10、12月はこんな感じで返ってくる値は当月になります)
[参考] http://itpro.nikkeibp.co.jp/article/COLUMN/20070131/260224/
というわけで一回1日に戻してからmodifyしないとダメみたいです。
$end = new DateTime('2009-03-31'); $start = new DateTime($end->format('Y-m-01')); $start->modify('-1month');
終了日と開始日(終了日の1か月前の1日)を出したかったので、こんな感じにしました。