カテゴリ: PHP 更新日: 2026/07/19

PHPで日付の差分を計算する方法完全解説diffとDateIntervalの使い方を初心者向けに丁寧に解説

PHPで日付の差分を計算する!diff()(DateInterval)の正確な使い方
PHPで日付の差分を計算する!diff()(DateInterval)の正確な使い方

先生と生徒の会話形式で理解しよう

生徒

「PHPで日付と日付の差ってどうやって計算するんですか?」

先生

「PHPではDateTimeとdiffという機能を使うことで簡単に日付の差分を計算できますよ。」

生徒

「差分って何日とか何ヶ月とかですか?」

先生

「そうです。年や月や日など細かく計算できます。それでは基本から見ていきましょう。」

1. 日付の差分計算とは何か

1. 日付の差分計算とは何か
1. 日付の差分計算とは何か

PHPで日付の差分を計算するとは、二つの日付の間にどれくらいの時間の差があるのかを求めることです。例えば今日と誕生日の差や、登録日から現在までの経過日数などを計算できます。

初心者の方はカレンダーをイメージすると分かりやすいです。ある日付から別の日付まで何日離れているかを数えるような処理が差分計算です。

この機能は期限管理や年齢計算など多くの場面で使われるため、PHPの基本としてしっかり理解しておくことが重要です。

2. DateTimeクラスの基本

2. DateTimeクラスの基本
2. DateTimeクラスの基本

PHPで日付を扱うときはDateTimeクラスを使います。これは日付や時間を簡単に扱うための便利な機能です。


$date1 = new DateTime('2024-01-01');
$date2 = new DateTime('2024-01-10');

echo $date1->format('Y-m-d');

2024-01-01

DateTimeを使うことで、文字列としてではなく日付として正確に処理できるようになります。

3. diffメソッドの基本的な使い方

3. diffメソッドの基本的な使い方
3. diffメソッドの基本的な使い方

日付の差分を計算するにはdiffメソッドを使います。このメソッドは二つのDateTimeの差をDateIntervalという形で返します。


$date1 = new DateTime('2024-01-01');
$date2 = new DateTime('2024-01-10');

$diff = $date1->diff($date2);

echo $diff->days;

9

このようにdiffを使うことで簡単に日数の差を取得できます。

4. DateIntervalの仕組み

4. DateIntervalの仕組み
4. DateIntervalの仕組み

DateIntervalとはdiffメソッドの結果として返されるオブジェクトで、年や月や日などの差をそれぞれ持っています。


$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2024-03-05');

$diff = $date1->diff($date2);

echo $diff->y;
echo $diff->m;
echo $diff->d;

1年2ヶ月4日

このように細かい単位で差分を取得できるのが特徴です。

5. フォーマットを使った表示方法

5. フォーマットを使った表示方法
5. フォーマットを使った表示方法

diffの結果はformatメソッドを使って自由に表示できます。これにより分かりやすい形で出力できます。


$date1 = new DateTime('2024-01-01');
$date2 = new DateTime('2024-02-15');

$diff = $date1->diff($date2);

echo $diff->format('%a日');

45日

フォーマットを使うことで表示の自由度が高くなります。

6. 差分の符号に注意する

6. 差分の符号に注意する
6. 差分の符号に注意する

diffでは日付の順番によって結果の向きが変わります。逆の場合はinvertというプロパティで確認できます。


$date1 = new DateTime('2024-02-01');
$date2 = new DateTime('2024-01-01');

$diff = $date1->diff($date2);

echo $diff->invert;

1

invertが1の場合は逆方向の差分であることを意味します。

7. 実務でよく使う活用例

7. 実務でよく使う活用例
7. 実務でよく使う活用例

日付差分は年齢計算や経過日数の表示などでよく使われます。例えば登録日から何日経ったかを表示する機能などです。


$created = new DateTime('2024-01-01');
$now = new DateTime();

$diff = $created->diff($now);

echo $diff->days . '日経過';

日数が表示される

このようにユーザーに分かりやすい情報を表示できます。

8. 初心者が意識すべきポイント

8. 初心者が意識すべきポイント
8. 初心者が意識すべきポイント

まずはDateTimeとdiffの基本を覚えることが重要です。文字列ではなく日付として扱うことで、正確な計算ができるようになります。

また、daysやformatなどの使い方を理解することで、様々な場面に応用できます。日付の差分は実務でも頻繁に使うため、しっかりと身につけておきましょう。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルートとコントローラを対応付ける方法(名前付きルート)を初心者向けに解説
New2
Symfony
Symfonyで画像やファイルをアップロードする時のバリデーション完全ガイド!初心者でもわかる入力チェックの基本
New3
Laravel
Laravelで言語切替UIを作る!多言語対応(ローカリゼーション)実践ガイド
New4
CodeIgniter
CodeIgniterでローカル開発環境を構築する方法!初心者向け完全ガイド
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのキャッシュ管理を完全ガイド!初心者でもわかるメリットと注意点
No.2
Java&Spring記事人気No2
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
No.3
Java&Spring記事人気No3
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterとは?特徴・できること・他PHPフレームワークとの違いを完全解説
No.5
Java&Spring記事人気No5
Laravel
Laravelローカリゼーション入門!言語の取得と切り替え(App::getLocale / setLocale)を徹底解説
No.6
Java&Spring記事人気No6
Symfony
TwigのHTMLエスケープとrawフィルタの使い方を完全解説!初心者にもわかるテンプレート表示のコツ
No.7
Java&Spring記事人気No7
Laravel
Laravelの条件分岐とループ処理をBladeで書く方法
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterのビュー共通化ガイド!初心者でもわかる部分ビューの読み込みとinclude設計