【C#入門】文字列とDateTimeの変換チェック(TryParse/TryParseExact)

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

C#には日時の文字列をDateTime型に変換できるかどうかを確認するための「TryParseメソッド」があります。

「TryParseExactメソッド」を使えば、日時の文字列のフォーマットを指定して変換チェックができるので、上手く活用してください。

この記事では、

  • DateTimeクラスとは
  • TryParseメソッドとは
  • TryParseメソッドで文字列がDateTime型に変換できるかチェックする方法
  • TryParseExactメソッドとは
  • TryParseExactメソッドで書式を指定して変換できるかチェックする方法

などの基本的な内容から、応用的な使い方に関しても解説していきます。

今回はこれらの方法を覚えるために、日時の文字列をDateTime型に変換できるかチェックするさまざまな方法をわかりやすく解説します!

目次

DateTimeクラスとは

DateTimeクラスは、日時(日付)を扱うときに使うクラスです。

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

TryParseメソッドとは

TryParseメソッドは、日時の文字列をDateTime型に変換するときに使います。

TryParseメソッドは文字列が変換できないときに例外が発生しないので、安全に変換できるかどうかの確認ができます。Parseメソッドで日時に変換できない文字列を指定すると、「FormatException」の例外が発生するので注意してください。

TryParseメソッドで文字列がDateTime型に変換できるかチェックする方法

ここでは、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

このようにして、文字列をDateTime型に変換することができました。

TryParseExactメソッドとは

日時の文字列が独自の書式の場合には、TryParseExactメソッドを使用します。

ParseExactメソッドは、第1引数に文字列を指定し、第2引数にフォーマットを指定します。第3引数にCultureInfoを指定し、第4引数にDateTimeStylesを指定しますが、通常はサンプルプログラムと同じように指定すれば問題ありません。

第5引数にDateTime型に変換後の日時が格納されます。

フォーマットは「yyyy/MM/dd HH:mm:ss」のように指定します。

TryParseExactメソッドで書式を指定して変換できるかチェックする方法

ここでは、TryParseExactメソッドで書式を指定して変換できるかチェックする方法を解説します。

TryParseExactメソッドは書式のフォーマットを指定して、変換可能かどうかを確認することができます。

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

using System;
using System.Globalization;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string strTime = "2018/05/01 12:34:56";
            string format = "yyyy/MM/dd HH:mm:ss";
            CultureInfo ci = CultureInfo.CurrentCulture;
            DateTimeStyles dts = DateTimeStyles.None;
            DateTime dateTime;

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

            Console.ReadKey();
        }
    }
}

実行結果:

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

このようにして、書式を指定して文字列をDateTime型に変換することができました。

ParseメソッドとParseExactメソッドの使い方

変換可能かどうかの確認が必要ない場合には、Parseメソッドを使います。

Parseメソッドの使い方はこちらの記事で詳しく解説しているので、ぜひ確認してください。

まとめ

いかがでしたか?

今回はDateTimeクラスの「TryParseメソッド」と「TryParseExactメソッド」で日時の文字列をDateTime型に変換できるかチェックして変換する方法を解説しました。

例外を発生させずに変換可能かどうかの確認ができるので、ぜひ活用してくださいね。もし、日時の変換方法を忘れてしまったらこの記事を確認してください!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次