目的
php で date関数を使用するときに少し嵌るところがあったので、
メモとして残しておきます。
日付の計算で1ヶ月後の末日を求めるときに 2ヶ月後の末日を求めてしまうという問題に遭遇しました。
解決策
事象の確認
sample.php
<?php
date_default_timezone_set('Asia/Tokyo');
$time = '2017/10/31';
echo date('Y-m-t', strtotime('+1 month ' . $time)) . "\n";
下記を実行する
$ php sample.php
結果
2017-12-01 00:00:00
解決策
月の1日から末日を計算する
<?php
date_default_timezone_set('Asia/Tokyo');
$time = '2017/10/01';
echo date('Y-m-t', strtotime('+1 month ' . $time)) . "\n";
結果
2017-11-30