PHPで日付を比較する場面は多くあります。例えば、予約システムで「今日が締め切り日を過ぎているか判定する」、または「特定の期間内にイベントがあるか確認する」などです。
日付を比較する方法として、strtotime()
や DateTime
クラスを使うこともできますが、Carbonを使うとよりシンプルで可読性の高いコードが書けます。
本記事では、PHPのCarbonを使った日付の比較方法をコード例付きで解説します。初心者の方でも理解しやすいように、基本から応用までしっかり説明するので、ぜひ参考にしてください!
Carbonとは?基本的な使い方
Carbonとは?
Carbonは、PHPの 日付・時刻処理を簡単にするライブラリ です。PHPの DateTime
クラスを拡張しており、シンプルな記述で柔軟な日付操作が可能 になります。
Carbonのインストール方法
CarbonはComposerを使ってインストールできます。まだインストールしていない場合は、以下のコマンドを実行してください。
composer require nesbot/carbon
その後、vendor/autoload.php
を読み込むことで使用できます。
require 'vendor/autoload.php';
use Carbon\Carbon;
Laravelを使っているのであれば、最初から入っているのでこの作業は飛ばして良いです。
Carbonの基本的な日付操作
Carbonを使うと、現在の日付や特定の日付を簡単に取得できます。
use Carbon\Carbon;
echo Carbon::now(); // 現在の日付と時刻
echo Carbon::today(); // 今日の日付(時刻は00:00:00)
echo Carbon::yesterday(); // 昨日の日付
echo Carbon::tomorrow(); // 明日の日付
出力例
2025-02-12 14:30:00
2025-02-12 00:00:00
2025-02-11 00:00:00
2025-02-13 00:00:00
このように、Carbonを使えば DateTime
よりも直感的に日付操作が可能です。
Carbonの日付比較の方法
Carbonでは、日付の比較をシンプルなメソッドで実現できます。equalTo()
や greaterThan()
などを使えば、可読性の高いコードが書けます。
結果
先によく使う関数を書いてしまいます。後に解説を記載します。
意味 | Code | 省略Code | 不等号 |
---|---|---|---|
等しい | $date1->equalTo($data2) | $data1->eq($data2) | $data1 == $data2 |
より大きい | $data1->greaterThan($data2) | $data1->gt($data2) | $data1 > $data2 |
以上 | $data1->greaterThanOrEqualTo($data2) | $data1->gte($data2) | $data1 >= $data2 |
未満 | $data1->lessThan($data2) | $data1->lt($data2) | $data1 < $data2 |
以下 | $data1->lessThanOrEqualTo($data2) | $data1->lte($data2) | $data1 <= $data2 |
間にある | $data1->between($start, $end) | – | $start <= $data1 <= $end |
同じ日付 | $data->isSameDay($data2) | – | 同じ日付かどうか |
equalTo() – 2つの日付が等しいか
use Carbon\Carbon;
$date1 = Carbon::parse('2025-02-12');
$date2 = Carbon::parse('2025-02-12');
if ($date1->equalTo($date2)) {
echo "日付は同じです";
} else {
echo "日付は異なります";
}
出力
日付は同じです
greaterThan() / lessThan() – どちらが新しいか
use Carbon\Carbon;
$date1 = Carbon::parse('2025-02-13');
$date2 = Carbon::parse('2025-02-12');
if ($date1->greaterThan($date2)) {
echo "date1 は date2 より新しい";
}
出力
date1 は date2 より新しい
greaterThanOrEqualTo() / lessThanOrEqualTo() – 以上・以下の比較
use Carbon\Carbon;
$date1 = Carbon::parse('2025-02-12');
$date2 = Carbon::parse('2025-02-12');
if ($date1->greaterThanOrEqualTo($date2)) {
echo "date1 は date2 以上";
}
出力
date1 は date2 以上
isSameDay() – 同じ日か判定
use Carbon\Carbon;
$date1 = Carbon::parse('2025-02-12 10:00:00');
$date2 = Carbon::parse('2025-02-12 23:59:59');
if ($date1->isSameDay($date2)) {
echo "同じ日です";
}
出力
同じ日です
実践!Carbonで日付を比較するコード例
2つの日付の差を取得
use Carbon\Carbon;
$date1 = Carbon::parse('2025-02-12');
$date2 = Carbon::parse('2025-02-20');
$diff = $date1->diffInDays($date2);
echo "日数の差: $diff 日";
コメント