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つの日付の差分(日数など)も簡単に取得できます。形式が不定な入力を扱う場合や実務での開発では、こちらの方法がより柔軟で安全です。
-
PHPのnext()関数の使い方|配列の内部ポインタを進める方法
next()関数とはPHPのnext()関数は、配列の内部ポインタを次の要素へ進め、進めた先の要素の値を返すための関数です。配列には内部的なポインタが存在し、current()で現在位置の値を取得したり、next()で要素を順番に辿ったりすることができます。構文next(arr)パラメータarr − 操作対象となる配列戻り値next()関数は、成功した場合に配列内の次の要素の値を返します。それ以上要素が存在しない場合はFALSEを返します。使用例以下はnext()関数の基本的な使用例です。<?php $os = array(windows, mac, linux, solaris); e
-
PHPのend()関数とは?使い方と実例をわかりやすく解説
PHPのend()関数は、配列の内部ポインタを最後の要素へ移動させるための関数です。この関数を呼び出すと、内部ポインタが配列の末尾の要素を指すようになり、その要素の値を取得できます。 構文 end(arr) パラメータ arr − 内部ポインタを移動させたい対象の配列を指定します。 戻り値 end()関数は、成功した場合に配列の最後の要素の値を返します。配列が空の場合はFALSEを返します。 使用例 以下は、end()関数を使って配列の最後の要素を取得する基本的な例です。 <?php $os = array(windows, mac, linux, solaris); echo en