[PHP]Carbonで日付を比較する方法

Laravel Laravel

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 日";

コメント

タイトルとURLをコピーしました