C#のDateTime.CompareTo()メソッドの使い方とサンプルコード解説
C#のDateTime.CompareTo()メソッドは、現在のインスタンスの値と指定された別のDateTime値を比較し、その前後関係を整数値で返すメソッドです。日付や時刻の大小比較を行いたい場面で非常に便利です。
構文
DateTime.CompareTo()メソッドの構文は以下のとおりです。
public int CompareTo (DateTime val);
引数valには、比較対象となる日付(DateTime値)を指定します。
戻り値
このメソッドは、比較結果を以下のような整数値として返します。
- 0未満の値 − このインスタンスが
valよりも早い(過去)場合 - 0 − このインスタンスが
valと同一の場合 - 0より大きい値 − このインスタンスが
valよりも遅い(未来)場合
使用例1:同じ日時同士の比較
まずは、同じ日時を持つ2つのDateTimeオブジェクトを比較する例を見てみましょう。
using System;
public class Demo {
public static void Main(){
DateTime date1 = new DateTime(2019, 05, 20, 6, 20, 40);
DateTime date2 = new DateTime(2019, 05, 20, 6, 20, 40);
Console.WriteLine("DateTime 1 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date1);
Console.WriteLine("DateTime 2 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date2);
int res = date1.CompareTo(date2);
// date1とdate2が等しいため、0が返される
Console.WriteLine(res);
}
}出力
上記のコードを実行すると、次のような出力が得られます。
DateTime 1 = 20 May 2019, 06:20:40 DateTime 2 = 20 May 2019, 06:20:40 0
date1とdate2はまったく同じ日時であるため、CompareTo()メソッドは0を返しています。
使用例2:異なる日時同士の比較
続いて、異なる日時を比較した場合の動作を確認してみましょう。
using System;
public class Demo {
public static void Main(){
DateTime date1 = new DateTime(2019, 08, 20, 6, 20, 40);
DateTime date2 = new DateTime(2019, 05, 20, 6, 20, 40);
Console.WriteLine("DateTime 1 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date1);
Console.WriteLine("DateTime 2 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date2);
int res = date1.CompareTo(date2);
// date1がdate2より後の日時のため、0より大きい値が返される
Console.WriteLine(res);
}
}出力
上記のコードを実行すると、次のような出力が得られます。
DateTime 1 = 20 August 2019, 06:20:40 DateTime 2 = 20 May 2019, 06:20:40 1
この例では、date1(2019年8月20日)がdate2(2019年5月20日)よりも後の日時であるため、CompareTo()メソッドは1(0より大きい値)を返します。
まとめ
DateTime.CompareTo()メソッドを使えば、2つの日時の前後関係を簡単に判定できます。「戻り値が負なら早い、0なら等しい、正なら遅い」と覚えておくと実務でも役立ちます。なお、単に「等しいかどうか」だけを判定したい場合は、Equals()メソッドや==演算子を使う方法もありますので、目的に応じて使い分けるとよいでしょう。
-
C#のDateTimeOffset.CompareTo()メソッドの使い方を徹底解説
C#のDateTimeOffset.CompareTo()メソッドは、現在のDateTimeOffsetオブジェクトと指定された別のDateTimeOffsetオブジェクトを比較し、現在のオブジェクトが相手より前の日時なのか、同一なのか、それとも後の日時なのかを判定するために使用されます。このメソッドは整数値を返し、戻り値の意味は以下の通りです。0未満 – このインスタンスがValより前の日時である場合0 – このインスタンスがValと同一である場合0より大きい – このインスタンスがValより後の日時である場合構文構文は以下の通りです。public int CompareTo (DateTi
-
C#のCompareTo()メソッドの使い方を解説
C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数