TL;DR 特に理由がなければCarbonを用いて月の計算をする場合はaddMonthsNoOverflow()メソッドを使うようにしたほうがいい DateTimeクラスの仕様に度々ひっかかる Carbonを用いて月の計算を行っていると、どうやら28~31日のデータを扱うときに挙動がおかしいことに気が付きました 前もこんなのあったなーと思いつつ再現させる (前:【PHP】ある月の初日と末日を取得する方法(DateTimeクラス & Carbon編)#要注意引数は年月日を渡しましょう - Qiita ) 検証 例:契約日が15日未満の場合は翌月の27日、15日以降なら翌々月の27日が請求月になる みたいな場合の処理 (ここでは契約日が2018-01-31で考えます) 環境としてはLaravelのv5.5系に入っているCarbon(1.36)を使用して以下の例の処理を動かします use Car