カテゴリ: C# 更新日: 2025/12/02

C#で日付や時間の比較を行う方法を完全ガイド!初心者向けのDateTime比較(CompareTo・Equals)

C#で日付や時間の比較を行う方法(CompareTo・Equals)
C#で日付や時間の比較を行う方法(CompareTo・Equals)

先生と生徒の会話形式で理解しよう

生徒

「C#で日付や時間を比較する方法ってありますか?例えば、今日と明日を比べたり、同じ時刻かどうかを調べたりできますか?」

先生

「できますよ。C#では、DateTime型を使って日付や時間を扱うことができて、CompareToやEqualsという機能で比較ができます。」

生徒

「CompareToとEqualsって何が違うんですか?」

先生

「それぞれ役割が違うので、実際のコードを見ながらわかりやすく説明していきますね。」

1. C#で日付や時間を扱うDateTime型とは?

1. C#で日付や時間を扱うDateTime型とは?
1. C#で日付や時間を扱うDateTime型とは?

C#のDateTime型は、日付や時刻を保存したり、計算や比較を行うための非常に重要なデータ型です。例えば、現在の日付や現在時刻、過去の日付、未来の日時などを簡単に扱うことができます。日付を扱うことは、出勤管理アプリ、予約管理システム、連絡アプリなど多くのプログラムで欠かせない機能です。

日付比較とは、「どちらが前なのか後なのか」「同じ日付なのか違う日付なのか」を判断することです。人間なら感覚的にわかりますが、コンピュータは厳密な比較が必要なので、CompareToやEqualsといった便利な仕組みを使います。

2. DateTime.CompareToで日付同士を比較する方法

2. DateTime.CompareToで日付同士を比較する方法
2. DateTime.CompareToで日付同士を比較する方法

CompareToは、二つの日付を比べて「前・同じ・後」のどれに当てはまるかを判断するための機能です。CompareToは結果として、数字で比較の結果を返します。

  • 戻り値が0:同じ日時
  • 戻り値が1:指定した日付より後
  • 戻り値が-1:指定した日付より前

実際に簡単な比較の例を見てみましょう。


DateTime today = DateTime.Now;
DateTime tomorrow = today.AddDays(1);

int result = today.CompareTo(tomorrow);

Console.WriteLine(result);

実行してみると、次のような結果になるでしょう。


-1

なぜ-1になるかというと、今日(today)のほうが明日(tomorrow)より前だからです。もし逆に


int result = tomorrow.CompareTo(today);
Console.WriteLine(result);

と書くと、結果はこうなります。


1

未来の日時は過去の日時より後なので、「後」を意味する1が返ってきます。

3. DateTime.Equalsで同じ日時かどうかを調べる方法

3. DateTime.Equalsで同じ日時かどうかを調べる方法
3. DateTime.Equalsで同じ日時かどうかを調べる方法

Equalsは、二つの日付や時間が完全に同じかどうかを確認するための比較方法です。結果はtrue(同じ)かfalse(違う)で返されます。時刻まで含めて一致している必要があるため、秒やミリ秒が違うとfalseになります。


DateTime time1 = new DateTime(2025, 1, 1, 10, 30, 0);
DateTime time2 = new DateTime(2025, 1, 1, 10, 30, 0);

bool isEqual = time1.Equals(time2);

Console.WriteLine(isEqual);

実行結果は次のようになります。


True

同じ年月日、同じ時間、同じ分、同じ秒なので一致していると判断されます。もし秒だけ違ったらどうなるでしょう?


DateTime time3 = new DateTime(2025, 1, 1, 10, 30, 1);

Console.WriteLine(time1.Equals(time3));

結果はこうなります。


False

4. 比較の使いどころと活用例

4. 比較の使いどころと活用例
4. 比較の使いどころと活用例

日付比較は多くの場面で利用されます。例えば、次のようなケースです。

  • 予約日時が現在より過去なのか確認する(無効にするため)
  • 締め切り日を過ぎているか判断する
  • 誕生日から現在までの経過を計算する
  • 通知機能で未来のイベントをチェックする

例えば、締め切り日を過ぎているかをチェックするコードは次のように書けます。


DateTime deadline = new DateTime(2025, 2, 1);
DateTime now = DateTime.Now;

if (now.CompareTo(deadline) > 0)
{
    Console.WriteLine("締め切りを過ぎています。");
}
else
{
    Console.WriteLine("まだ締め切り前です。");
}

5. CompareToとEqualsの違いをまとめて理解しよう

5. CompareToとEqualsの違いをまとめて理解しよう
5. CompareToとEqualsの違いをまとめて理解しよう
機能名判定内容返り値
CompareTo日時の前後関係を比較-1, 0, 1
Equals完全に同じ日時か比較true / false

「前か後か」「全く同じか」を判断したいとき、それぞれ使い分けることで正確な比較ができます。プログラムで時間を扱うときには、とても重要なポイントです。

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方