【Laravel】Carbonで年月指定のズレを防ぐ「!」活用法

いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「LaravelのCarbonで年月指定のズレを防ぐ方法を知りたい」とお考えではありませんか?
Laravelで「年月」を指定すると、意図しない日付のズレが起きることがあります。
特に「2025-02」のように月だけを扱う場面では思わぬズレが発生し、検索条件や集計結果が狂う原因になります。



日付がズレるのはプログラミングあるあるですね(笑)
ということで、本記事ではLaravelのCarbonで年月指定のズレを防ぐ「!」活用法を解説します。





すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
なぜ日付のズレが起きるのか?
createFromFormat('Y-m', '2025-02') のように月だけを指定すると、足りない「日付」に今日の日が自動で入ります。
もし実行日が31日の場合、2月に31日はないため、日付が自動で3月1日へ繰り上がります。
use Carbon\Carbon;
// 今日が 1/31 の場合
$date = Carbon::createFromFormat('Y-m', '2025-02');
echo $date; // → 2025-03-01 になる


存在しない日を指定することで日付がズレちゃう感じですね。
【結論】「!」修飾子を使うべき理由
Carbonの! 修飾子を使えば、日付のズレを確実に防げます。
!Y-m は「日付を1日にリセットしてから年月をセットする」ため、存在しない日が入り込むことはありません。
use Carbon\Carbon;
$date = Carbon::createFromFormat('!Y-m', '2025-02');
echo $date; // → 2025-02-01(ズレない)


! を付けることで、正しい日付が必ず得られます。
地味に便利。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【厳選】フリーランスエンジニアにおすすめなエージェント3選


フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。
僕が実際に利用しているおすすめエージェントを紹介しますね。



エージェントは必ず複数登録してください。
担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…
僕は実際に5つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- IT案件に特化したフリーランスエージェント。
- 週2〜3日の案件が豊富。
- リモート案件が多く、直エンドなので単価も高い。
※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。
ITプロパートナーズ
![]()
![]()
週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。



週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。
とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!
よくある質問
「!」修飾子を付けずに年月を扱うと必ずズレますか?
実行日の「日」に依存するため、1~28日なら問題ないこともあります。
31日など月によって存在しない日になると翌月に繰り上がるので、安全のため! を使うのがおすすめです。
年月だけでなく時刻も指定したい場合はどうすれば良いですか?
! 修飾子で日付・時刻をリセットしたあと、必要な時刻はsetTime() などで指定できます。
$date = Carbon::createFromFormat('!Y-m', '2025-02')->setTime(12, 30);まとめ
今回は、LaravelのCarbonで年月指定のズレを防ぐ「!」活用法について解説しました。
以下が本記事のまとめになります。
- おすすめ本
Laravelの勉強なら「PHPフレームワーク Laravel入門 第2版



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



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








