【C#入門】DateTimeで日付の処理をする方法総まとめ(ToString/parse)

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

C#には日時(日付)を扱うためのDateTime構造体があります。日時に関する様々な操作ができるので、上手く活用してください。この記事では、

  • DateTime構造体とは
  • 現在時刻を取得する方法
  • ToStringで日時(日付)を文字列に変換する方法
  • 日時の文字列をDateTimeに変換する方法
  • 日付を比較するCompareToと比較演算子の使い方

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

目次

DateTime構造体とは

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

フォーマットで表示形式の指定や、区切り文字を指定したりすることができます。それ以外にも、日時に関する様々な操作をすることができます。

現在時刻を取得する方法(DateTime.Now/UtcNow)

ここでは、DateTime.Nowプロパティで現在時刻を取得する方法を解説します。現在時刻を取得するには、DateTime.Nowプロパティを使用します。現在時刻はDateTime型で取得されます。

次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            DateTime dt = DateTime.Now;
            Console.WriteLine(dt);

            Console.ReadKey();
        }
    }
}

実行結果:

2018/05/04 15:25:39

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

ToStringで日時(日付)を文字列に変換する方法

DateTimeの日時をフォーマットを指定して文字列に変換するには、ToStringメソッドの引数にフォーマットを指定します。年月日は「yyyy/MM/dd」のように指定します。日時は「HH:mm:ss」のように指定します。

月は大文字の「MM」で分が小文字の「mm」であることに注意してください。何時かを示す「HH」は、大文字だと24時間表記で、小文字だと12時間表記になります。日時をフォーマットを指定して文字列に変換する方法を次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            DateTime dt = DateTime.Now;

            string result = dt.ToString("yyyy/MM/dd HH:mm:ss");
            Console.WriteLine(result);

            result = dt.ToString("yyyy年MM月dd日 HH時mm分ss秒");
            Console.WriteLine(result);

            Console.ReadKey();
        }
    }
}

実行結果:

2018/04/26 17:33:55
2018年04月26日 17時33分55秒

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

日時の文字列をDateTimeに変換する方法

日時の文字列をDateTimeに変換する方法(Parse/ParseExact)

ここでは、Parseメソッドで文字列をDateTime型に変換する方法を解説します。Parseメソッドは日時の文字列をDateTime型に変換して戻り値として返します。

次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string strTime = "2018/05/01 12:34:56";

            DateTime dTime = DateTime.Parse(strTime);
            Console.WriteLine(dTime);

            strTime = "2018/05/01";
            dTime = DateTime.Parse(strTime);
            Console.WriteLine(dTime);

            strTime = "12:34:56";
            dTime = DateTime.Parse(strTime);
            Console.WriteLine(dTime);

            Console.ReadKey();
        }
    }
}

実行結果:

2018/05/01 12:34:56
2018/05/01 0:00:00
2018/05/04 12:34:56

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

日時の文字列とDateTimeの変換チェック(TryParse/TryParseExact)

ここでは、TryParseメソッドの使い方を解説します。TryParseメソッドは第1引数に変換する文字列を指定し、第2引数にDateTime型に変換後の日時が格納されます。戻り値は変換可能かどうかの判定を返します。

次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string strTime = "2018/05/01 12:34:56";
            DateTime dateTime;

            if (DateTime.TryParse(strTime, out dateTime))
            {
                Console.WriteLine("変換できました!");
                Console.WriteLine(dateTime);
            }
            else
            {
                Console.WriteLine("変換できません!");
            }

            Console.ReadKey();
        }
    }
}

実行結果:

変換できました!
2018/05/01 12:34:56

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

日付を比較するCompareToと比較演算子の使い方

ここでは、DateTime型の日付を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より前の日時です

さらに詳しい使い方は次の記事で解説しているので、ぜひ確認してください。

まとめ

いかがでしたか?今回はDateTime構造体で日時(日付)を扱う方法をまとめて解説しました。日付と文字列の変換や、日時の比較など必要に応じて使い分けてくださいね。

もし、DateTime構造体の使い方を忘れてしまったらこの記事を確認してください!

この記事を書いた人

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

連絡先はこちらです。
ntakeshi@sejuku.net

目次