【C#】 日時、日付を比較するCompareの使い方




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の使い方を紹介しました。

コードを書いていると日時を比較したくなるときがありますが
自分で実装するには大変なので、標準関数は積極的に使用して行きましょう!

大小関係の比較のみで、日数までは分かりませんがとても便利です。

 

新米太郎
新米太郎

お読み頂きありがとうございました!




コメント

タイトルとURLをコピーしました