PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで2つの日付を比較する方法|サンプルコード付きで解説


PHPで2つの日付を比較する方法を紹介します。日付が「YYYY-MM-DD」のようにゼロ埋めされた形式で表現されている場合、文字列の比較結果が日付の前後関係と一致するため、等価演算子や大小比較の演算子をそのまま使用できます。

例1:等価演算子(==)で日付が等しいかどうかを判定する

<?php
    $dateOne = "2019-10-30";
    $dateTwo = "2019-10-30";
    echo "日付1 = $dateOne";
    echo "\n日付2 = $dateTwo";
    if ($dateOne == $dateTwo)
        echo "\n両方の日付は同じです!";
    else
        echo "両方の日付は異なります!";
?>

出力結果

上記のコードを実行すると、次のような出力が得られます。

日付1 = 2019-10-30
日付2 = 2019-10-30
両方の日付は同じです!

コードのポイント

等価演算子「==」は、左右の値が完全に一致しているかどうかを評価します。ここでは2つの変数に同じ「2019-10-30」という文字列が代入されているため、条件式は真(true)となり、「両方の日付は同じです!」というメッセージが出力されます。もし日付が1日でも違っていれば、else側の処理が実行され、日付が異なる旨のメッセージが表示されます。

例2:大小比較でどちらの日付が新しいかを判定する

次に、比較演算子「<」を使って、2つの日付の新旧を判定する例を見てみましょう。

<?php
    $dateOne = "2019-11-08";
    $dateTwo = "2018-08-10";
    echo "日付1 = $dateOne";
    echo "\n日付2 = $dateTwo";
    if ($dateOne < $dateTwo)
        echo "\n日付2の方が新しい日付です!";
    else
        echo "\n日付1の方が新しい日付です!";
?>

出力結果

このコードを実行すると、以下の出力になります。

日付1 = 2019-11-08
日付2 = 2018-08-10
日付1の方が新しい日付です!

解説

「YYYY-MM-DD」形式の文字列は、辞書順(文字コード順)に並べると古い日付から新しい日付の順になるため、「<」や「>」による比較で正しく前後関係を判定できます。この例では「2019-11-08」の方が「2018-08-10」よりも後の日付なので、日付1が新しいと判定されています。

補足:DateTimeクラスを使ったより安全な比較

文字列による比較はシンプルですが、対象が「YYYY-MM-DD」以外の形式(例:「DD-MM-YYYY」)の場合は正しく判定できない点に注意が必要です。より堅牢な処理を行いたい場合は、DateTimeクラスの利用が推奨されます。

<?php
    $dateOne = new DateTime("2019-11-08");
    $dateTwo = new DateTime("2018-08-10");

    var_dump($dateOne > $dateTwo);  // bool(true)  :日付1の方が新しい
    var_dump($dateOne == $dateTwo); // bool(false) :日付は等しくない

    // diff()メソッドで差分を取得することも可能
    $diff = $dateOne->diff($dateTwo);
    echo "差は " . $diff->days . " 日です"; // 差は 455 日です
?>

DateTimeオブジェクトは比較演算子で直接比較できるうえ、diff()メソッドを使えば2つの日付の差分(日数など)も簡単に取得できます。形式が不定な入力を扱う場合や実務での開発では、こちらの方法がより柔軟で安全です。

  1. PHPのnext()関数の使い方|配列の内部ポインタを進める方法

    next()関数とはPHPのnext()関数は、配列の内部ポインタを次の要素へ進め、進めた先の要素の値を返すための関数です。配列には内部的なポインタが存在し、current()で現在位置の値を取得したり、next()で要素を順番に辿ったりすることができます。構文next(arr)パラメータarr − 操作対象となる配列戻り値next()関数は、成功した場合に配列内の次の要素の値を返します。それ以上要素が存在しない場合はFALSEを返します。使用例以下はnext()関数の基本的な使用例です。<?php $os = array(windows, mac, linux, solaris); e

  2. PHPのend()関数とは?使い方と実例をわかりやすく解説

    PHPのend()関数は、配列の内部ポインタを最後の要素へ移動させるための関数です。この関数を呼び出すと、内部ポインタが配列の末尾の要素を指すようになり、その要素の値を取得できます。 構文 end(arr) パラメータ arr − 内部ポインタを移動させたい対象の配列を指定します。 戻り値 end()関数は、成功した場合に配列の最後の要素の値を返します。配列が空の場合はFALSEを返します。 使用例 以下は、end()関数を使って配列の最後の要素を取得する基本的な例です。 <?php $os = array(windows, mac, linux, solaris); echo en