Compareの仕様
DateTime.Compare(引数1, 引数2)
戻り値:
0, 1, -1 のいずれか
0:引数1 = 引数2 の場合
1:引数1 > 引数2 の場合
-1:引数1 < 引数2 の場合
日時を比較
DateTime dt1 = new DateTime(2021, 4, 10); DateTime dt2 = new DateTime(2021, 4, 9); DateTime dt3 = new DateTime(2021, 4, 11); // 04/10と04/10の比較 Console.WriteLine(DateTime.Compare(dt1, dt1)); // 04/10と04/9の比較 Console.WriteLine(DateTime.Compare(dt1, dt2)); // 04/10と04/11の比較 Console.WriteLine(DateTime.Compare(dt1, dt3)); Console.ReadLine();
結果:
0 1 -1
大小関係によって0, 1, -1 のいずれかが返っていることが分かります。
時刻まで比較している
DateTime dt1 = new DateTime(2021, 4, 10, 12, 00, 00); DateTime dt2 = new DateTime(2021, 4, 10, 00, 00, 00); DateTime dt3 = new DateTime(2021, 4, 10, 23, 59, 59); // 04/10と04/10の比較 Console.WriteLine(DateTime.Compare(dt1, dt1)); // 04/10と04/9の比較 Console.WriteLine(DateTime.Compare(dt1, dt2)); // 04/10と04/11の比較 Console.WriteLine(DateTime.Compare(dt1, dt3)); Console.ReadLine();
結果:
0 1 -1
このように、同じ日付であっても時間まで比較していることが分かります。
日付を比較
時刻は見ずに、日付までで判断したい場合
(=同じ日付なら同一と判断する)
DateTimeのDateプロパティで、日付までを取得可能です
DateTime dt1 = new DateTime(2021, 4, 10, 12, 00, 00); DateTime dt2 = new DateTime(2021, 4, 10, 00, 00, 00); DateTime dt3 = new DateTime(2021, 4, 10, 23, 59, 59); // 04/10 12:00 と04/10 12:00の比較 Console.WriteLine(DateTime.Compare(dt1, dt1)); // 04/10 12:00 と04/10 00:00の比較 Console.WriteLine(DateTime.Compare(dt1.Date, dt2.Date)); // 04/10 12:00 と04/10 23:59の比較 Console.WriteLine(DateTime.Compare(dt1.Date, dt3.Date)); Console.ReadLine();
結果:
0 0 0
Dateプロパティの検証
.Dateを付けるとどうなるのか、単体で検証してみます
DateTime dt1 = new DateTime(2021, 4, 10, 12, 00, 00); DateTime dt2 = new DateTime(2021, 4, 10, 00, 00, 00); DateTime dt3 = new DateTime(2021, 4, 10, 23, 59, 59); Console.WriteLine(dt1); Console.WriteLine(dt2); Console.WriteLine(dt3); Console.WriteLine("------------------"); Console.WriteLine(dt1.Date); Console.WriteLine(dt2.Date); Console.WriteLine(dt3.Date); Console.ReadLine();
結果:
2021/04/10 12:00:00 2021/04/10 0:00:00 2021/04/10 23:59:59 ------------------ 2021/04/10 0:00:00 2021/04/10 0:00:00 2021/04/10 0:00:00
時刻が切り捨てられて、0:00になっている事が分かりますね!
最後に
いかがだったでしょうか?
今回は日時、日付を比較するCompareの使い方を紹介しました。
コードを書いていると日時を比較したくなるときがありますが
自分で実装するには大変なので、標準関数は積極的に使用して行きましょう!
大小関係の比較のみで、日数までは分かりませんがとても便利です。

新米太郎
お読み頂きありがとうございました!
コメント