
こんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「LaravelのCarbonのsubMonthで先月の値が正しく取得できない場合の対処法を知りたい」とお考えではありませんか?
CarbonのsubMonthを使って日付を取得する場合、想定している値にならないことがあります。
正しく日付を取得する方法を知っておけば、バグによるトラブルを回避できます。



超簡単なのでサクッと解説します。
ということで、本記事ではLaravelのCarbonのsubMonthで先月の値が正しく取得できない場合の対処法を解説します。





すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
【Laravel】CarbonのsubMonthで先月の値が正しく取得できない場合の対処法
CarbonのsubMonth
を使うと、現在の日付から1か月前の日付を取得できます。
ただし、月末の値を取得する場合などは想定と異なる結果になることがあります。
例えば、3月31日にsubMonth
を使うと2月31日(存在しない日付)を取得しようとし、結果が3月3日などになることがあります。
この問題を回避するには、subMonthNoOverflow()
を使うと安全です。
$lastMonth = Carbon::now()->subMonthNoOverflow();
echo $lastMonth->format('Y-m-d');
上記のようにすれば、日付のずれを防ぎ、正確に先月の日付を取得できます。
よくある質問
subMonth
とsubMonthNoOverflow
の違いは何ですか?
subMonth
は現在の日付を基準に単純に1か月前を計算しますが、月末のずれを考慮しません。
subMonthNoOverflow
は月の日数の違いを考慮し、存在しない日付を自動調整してくれます。
subMonth
を使うと、どんな場合に問題が発生しますか?
例えば、3月31日にsubMonth
を使うと2月31日(存在しない日付)を取得しようとし、結果が3月3日などになることがあります。
subMonthNoOverflow
を使えば、正しく2月28日(または29日)になります。
まとめ
今回は、LaravelのCarbonのsubMonthで先月の値が正しく取得できない場合の対処法について解説しました。
以下が本記事のまとめになります。
- おすすめ本
Laravelの勉強なら「PHPフレームワーク Laravel入門 第2版



最後までお読みいただき、ありがとうございました!
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。