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

JavaScriptで日付を比較する方法|サンプルコード付きでわかりやすく解説

JavaScriptでは、Dateオブジェクトを使うことで日付を簡単に比較できます。比較対象となる日付は、過去・現在・未来のいずれであっても問題ありません。たとえば、過去の日付と未来の日付を比べたり、未来の日付と今日の日付を比べたりすることも可能です。

日付比較の仕組み

Dateオブジェクト同士を「>」や「<」といった比較演算子で比べると、それぞれの日付は自動的に「1970年1月1日00:00:00 UTCからの経過ミリ秒」に変換され、数値として比較されます。そのため、開発者が特別な変換処理を書く必要はありません。

なお、「==」や「===」による等価比較の場合は注意が必要です。Dateオブジェクトは参照型のため、同じ日時でも別々に生成したオブジェクトは一致しないことがあります。等しいかどうかを調べたい場合は、getTime()メソッドで数値化してから比較すると確実です。

例1:過去の日付との比較

次の例では、2000年の特定の日付(setFullYearの第2引数は月が0始まりのため、ここでは3月14日を指定)と今日の日付を比較し、結果に応じたメッセージを画面に表示します。

<html>
<body>
    <p id="compare"></p>
<script>
    var today = new Date();
    var otherday = new Date();
    otherday.setFullYear(2000, 2, 14);
    if (otherday > today) {
        var msg = "入力された日付は未来の日付です";
    } else {
        var msg = "入力された日付は過去の日付です";
    }
    document.getElementById("compare").innerHTML = msg;
</script>
</body>
</html>

出力結果

入力された日付は過去の日付です

2000年の日付は現在より過去であるため、「otherday > today」はfalseとなり、elseブロック内のメッセージが表示されます。

例2:未来の日付との比較

次の例では、2900年の特定の日付と今日の日付を比較します。今度は比較対象が未来の日付なので、表示されるメッセージが変わります。

<html>
<body>
    <p id="compare"></p>
<script>
    var today = new Date();
    var otherday = new Date();
    otherday.setFullYear(2900, 2, 14);
    if (otherday > today) {
        var msg = "入力された日付は未来の日付です";
    } else {
        var msg = "入力された日付は過去の日付です";
    }
    document.getElementById("compare").innerHTML = msg;
</script>
</body>
</html>

出力結果

入力された日付は未来の日付です

このように、if文と比較演算子を組み合わせるだけで、指定した日付が過去か未来かを簡単に判定できます。予約システムや有効期限チェックなど、実務でもよく使われるテクニックなので、ぜひ覚えておきましょう。

  1. 【Java入門】日付を比較する方法|compareTo()とequals()の使い方を解説

    Javaで日付(Date)同士を比較するには、compareTo()メソッドを使用します。このメソッドは、呼び出し元の日付オブジェクトと引数に渡した日付オブジェクトを比較し、その大小関係を整数値として返します。public int compareTo(Date anotherDate)引数anotherDateには、比較対象となる日付を指定します。戻り値の意味は以下の通りです。0:引数の日付と等しい場合0より小さい値:この日付が引数の日付より前の場合0より大きい値:この日付が引数の日付より後の場合compareTo()を使った比較例実際に2つの日付を比較するサンプルコードを見てみましょう。im

  2. Javaで2つの日付を比較する方法をわかりやすく解説!compareTo()の使い方と実行例

    Javaで2つの日付を比較したい場合、Comparableインターフェースが提供するcompareTo()メソッドを使うのが基本的な方法です。このメソッドは、2つの日付を比較した結果を整数値(int型)として返します。 compareTo()メソッドの戻り値 0 を返す … 両方の日付が等しい場合 0 より大きい値を返す … date1 が date2 より後の日付の場合 0 より小さい値を返す … date1 が date2 より前の日付の場合 構文 int compareTo(T o) サンプルコード 以下の例では、SimpleDateFormatを使って文字列をDateオブジェクトに