PHP 日付変更の罠( ノД`)シクシク…
new DateTime(‘now’)で宣言してから先月、先々月の日付けをmodifyで変更し、日付のフォーマットは「YYYY/MM」で取得していました。しかし今日そのスクリプトを実行するとなんだかおかしい……。
今月:2022-05 ←正しい
先月:2022-05 ←おかしい
先々月:2022-03 ←正しい
コードとしてはこんな感じです。
$MonthBeforeLast = new DateTime('now'); //先々月
$LastMonth = new DateTime('now'); //先月
$ThisMonth = new DateTime('now'); //今月
$MonthBeforeLast->modify('-2 months'); //先々月
$LastMonth->modify('-1 months'); //先月
$Exec_MonthBeforeLast = $MonthBeforeLast->format('Y-m-01');
$Exec_LastMonth = $LastMonth->format('Y-m-01');
$Exec_ThisMonth = $ThisMonth->format('Y-m-01');
$output_MonthBeforeLast = substr($Exec_MonthBeforeLast, 0, 7);
$output_LastMonth = substr($Exec_LastMonth, 0, 7);
$output_ThisMonth = substr($Exec_ThisMonth, 0, 7);
原因が分からずdumpしてみるなんと
object(DateTime)#1 (3) { ["date"]=> string(26) "2022-03-31 16:17:12.331822" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }
object(DateTime)#2 (3) { ["date"]=> string(26) "2022-05-01 16:17:12.331829" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }
object(DateTime)#3 (3) { ["date"]=> string(26) "2022-05-31 16:17:12.331831" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }
5/31の1カ月前の日付けが4/30じゃなく5/1になっている!!そうか4/31がないから5/1になっているのか…。気が付かないよ。そんなの( ノД`)シクシク…
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。