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

C#のDateTime.Compare()メソッドとは?使い方と戻り値を解説

C#のDateTime.Compare()メソッドは、2つのDateTimeインスタンス(日付と時刻)を比較するための静的メソッドです。比較結果として整数値が返され、その値によって2つの日付の前後関係や等価性を判定できます。

戻り値の意味

DateTime.Compare()メソッドの戻り値は以下のように解釈されます。

  • 0より小さい値:date1がdate2より早い(過去の日時)場合
  • 0:date1とdate2が同一の日時である場合
  • 0より大きい値:date1がdate2より遅い(未来の日時)場合

構文

DateTime.Compare()メソッドの基本的な構文は次のとおりです。

public static int Compare (DateTime d1, DateTime d2);

引数のd1とd2には、比較対象となる2つのDateTimeオブジェクトを指定します。

使用例1:異なる日付の比較

まず、AddYears()メソッドで5年後の日付を作成し、元の日付と比較する例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        DateTime d1 = new DateTime(2019, 11, 20, 6, 20, 40);
        DateTime d2 = d1.AddYears(5);
        Console.WriteLine("Initial DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
        Console.WriteLine("New DateTime (adding years) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
        int res = DateTime.Compare(d1, d2);
        // d1はd2より早いため、0未満の値が返される
        Console.WriteLine(res);
    }
}

出力結果

Initial DateTime = 20 November 2019, 06:20:40
New DateTime (adding years) = 20 November 2024, 06:20:40
-1

d1(2019年)はd2(2024年)よりも早いため、戻り値は「-1」となります。

使用例2:同じ日付の比較

次に、まったく同じ日時を持つ2つのDateTimeインスタンスを比較する例です。

using System;
public class Demo {
    public static void Main(){
        DateTime d1 = new DateTime(2019, 11, 20, 6, 20, 40);
        DateTime d2 = new DateTime(2019, 11, 20, 6, 20, 40);
        Console.WriteLine("DateTime 1 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
        Console.WriteLine("DateTime 2 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
        int res = DateTime.Compare(d1, d2);
        // d1とd2が等しいため、0が返される
        Console.WriteLine(res);
    }
}

出力結果

DateTime 1 = 20 November 2019, 06:20:40
DateTime 2 = 20 November 2019, 06:20:40
0

両者の日時が完全に一致しているため、戻り値は「0」になります。

まとめ

DateTime.Compare()メソッドを使えば、日付や時刻の前後関係を簡単に数値で判定できます。条件分岐と組み合わせれば、「期限切れかどうか」「指定日以降かどうか」などの処理も直感的に実装できるため、C#での日付操作において非常に便利なメソッドです。

  1. C#のDateTime.AddYears()メソッドとは?使い方をわかりやすく解説

    C#のDateTime.AddYears()メソッドは、このインスタンスが表す日時に指定した年数を加算し、その結果を新しいDateTimeとして返します。DateTimeは不変(イミュータブル)な構造体であるため、元のインスタンスの値が変更されることはありません。構文public DateTime AddYears (int yrs);パラメータ yrs には、加算する年数を整数で指定します。年数を減算したい場合は、負の値を渡してください。押さえておきたいポイント戻り値は計算結果を表す新しいDateTimeインスタンスで、元の日時には影響しません。うるう日の2月29日に対して加算・減算を行い、

  2. C#のDateTimeOffset.Compare()メソッドの使い方をわかりやすく解説

    C#のDateTimeOffset.Compare()メソッドは、2つのDateTimeOffsetオブジェクトを比較し、最初の日時が2番目の日時よりも「前」なのか、「同じ」なのか、それとも「後」なのかを判定するための静的メソッドです。このメソッドは整数値(int型)を返し、その戻り値によって比較結果が以下のように表されます。0未満 − val1がval2より早い日時である場合0 − val1とval2が同一の日時である場合0より大きい − val1がval2より遅い日時である場合構文DateTimeOffset.Compare()メソッドの構文は以下の通りです。public static i