スライドショー

【C#入門】日付を比較するCompareToと比較演算子の使い方

こんにちは!エンジニアの中沢です。

C#では日時の比較をするために、比較演算子CompareToメソッドを使うことができます。日時はDateTime型だけではなく、string型の文字列でも比較できるので、上手く活用してください。

この記事では、

  • DateTimeとは
  • DateTime型の日付を比較する方法
  • string型の文字列の日付を比較する方法

などの基本的な内容から、応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、日時を比較するさまざまな方法をわかりやすく解説します!

DateTimeとは

DateTimeクラスは、日時(日付)を扱うときに使うクラスです。現在の日時を取得したり、フォーマットを指定して日時を文字列に変換して表示することなどができます。フォーマットで表示形式の指定や、区切り文字を指定したりすることができます。

DateTime型の日付を比較する方法

比較演算子を使う方法

ここでは、DateTime型の日付を比較演算子で比較する方法を解説します。比較演算子を使えば簡単にどちらの日時が後なのかを判定することができます。次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            DateTime time1 = DateTime.Now;
            DateTime time2 = time1.AddHours(1);

            Console.WriteLine("time1 = " + time1);
            Console.WriteLine("time2 = " + time2);

            if (time1 == time2)
            {
                Console.WriteLine("time1とtime2は同じ日時です");
            }
            else if (time1 < time2)
            {
                Console.WriteLine("time1はtime2より前の日時です");
            }
            else if (time1 > time2)
            {
                Console.WriteLine("time1はtime2より後の日時です");
            }

            Console.ReadKey();
        }
    }
}

実行結果:

time1 = 2018/05/03 16:29:07
time2 = 2018/05/03 17:29:07
time1はtime2より前の日時です

このプログラムでは、現在の日時と、その1時間後の日時を比較しています。このように比較演算子を使って日時を比較することができました。

CompareToメソッドを使う方法

日時を比較するには、CompareToメソッドを使う方法もあります。CompareToメソッドで日時を比較する方法を次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            DateTime time1 = DateTime.Now;
            DateTime time2 = time1.AddHours(1);

            Console.WriteLine("time1 = " + time1);
            Console.WriteLine("time2 = " + time2);

            switch (time1.CompareTo(time2))
            {
                case -1:
                    Console.WriteLine("time1はtime2より前の日時です");
                    break;
                case 0:
                    Console.WriteLine("time1とtime2は同じ日時です");
                    break;
                case 1:
                    Console.WriteLine("time1はtime2より後の日時です");
                    break;
            }

            Console.ReadKey();
        }
    }
}

実行結果:

time1 = 2018/05/03 16:30:46
time2 = 2018/05/03 17:30:46
time1はtime2より前の日時です

このようにして、CompareToメソッドで比較することができました。

string型の文字列の日付を比較する方法

ここでは、string型の文字列の日付を比較する方法を解説します。文字列には比較演算子は使えないので、CompareToメソッドを使う必要があります。文字列の日付を比較する方法を次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            DateTime time1 = DateTime.Now;
            DateTime time2 = time1.AddHours(1);

            string strTime1 = time1.ToString();
            string strTime2 = time2.ToString();


            Console.WriteLine("strTime1 = " + strTime1);
            Console.WriteLine("strTime2 = " + strTime2);

            switch (strTime1.CompareTo(strTime2))
            {
                case -1:
                    Console.WriteLine("strTime1はstrTime2より前の日時です");
                    break;
                case 0:
                    Console.WriteLine("strTime1とstrTime2は同じ日時です");
                    break;
                case 1:
                    Console.WriteLine("strTime1はstrTime2より後の日時です");
                    break;
            }

            Console.ReadKey();
        }
    }
}

実行結果:

strTime1 = 2019/03/04 2:27:52
strTime2 = 2019/03/04 3:27:52
strTime1はstrTime2より前の日時です

このようにして、文字列の日付を比較することができました。

まとめ

いかがでしたか?今回は比較演算子とCompareToメソッドで日付の比較をする方法を解説しました。文字列の比較には「比較演算子」が使えないので注意してくださいね。

もし、文字列の比較を忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

中沢 丈

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説