phpのdate関数の計算で気をつけること
PHP
Published: 2018-01-15

目的

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