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#での日付操作において非常に便利なメソッドです。
-
C#のDateTime.AddYears()メソッドとは?使い方をわかりやすく解説
C#のDateTime.AddYears()メソッドは、このインスタンスが表す日時に指定した年数を加算し、その結果を新しいDateTimeとして返します。DateTimeは不変(イミュータブル)な構造体であるため、元のインスタンスの値が変更されることはありません。構文public DateTime AddYears (int yrs);パラメータ yrs には、加算する年数を整数で指定します。年数を減算したい場合は、負の値を渡してください。押さえておきたいポイント戻り値は計算結果を表す新しいDateTimeインスタンスで、元の日時には影響しません。うるう日の2月29日に対して加算・減算を行い、
-
C#のDateTimeOffset.Compare()メソッドの使い方をわかりやすく解説
C#のDateTimeOffset.Compare()メソッドは、2つのDateTimeOffsetオブジェクトを比較し、最初の日時が2番目の日時よりも「前」なのか、「同じ」なのか、それとも「後」なのかを判定するための静的メソッドです。このメソッドは整数値(int型)を返し、その戻り値によって比較結果が以下のように表されます。0未満 − val1がval2より早い日時である場合0 − val1とval2が同一の日時である場合0より大きい − val1がval2より遅い日時である場合構文DateTimeOffset.Compare()メソッドの構文は以下の通りです。public static i