質問: PHPで以下のようなコードで前月を取得しようとすると 一部の日付で実行した場合、想定した結果にならない場合があります。 正しく取得する方法はありますでしょうか? 「2013年3月31日」に実行した場合 想定の結果:2013-02 実際の結果:2013-03
回答: strtotimeの仕様のため、今回の現象が起こってしまいます。 3月31日から一ヶ月前を 計算しようとしたときに、2月31日が存在せず、 3月3日という日付が返ってきてしまうのが原因です。 DateTimeクラスを使う方法もあるのですが DateTimeクラスも同じ現象が起こりますので この場合はmktimeを使用して算出するのが妥当です。 ``` ```