【C#入門】日時の文字列をDateTimeに変換する方法(Parse/ParseExact)

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

C#には日時の文字列をDateTime型に変換するための「Parseメソッド」があります。「ParseExactメソッド」を使えば、日時の文字列のフォーマットを指定して変換できるので、上手く活用してください。

この記事では、

  • DateTime構造体とは
  • Parseメソッドとは
  • Parseメソッドで文字列をDateTime型に変換する方法
  • ParseExactメソッドとは
  • ParseExactメソッドで文字列をDateTime型に変換する方法

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

目次

DateTime構造体とは

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

フォーマットで表示形式の指定や、区切り文字を指定したりすることができます。

Parseメソッドとは

Parseメソッドは、日時の文字列をDateTime型に変換するときに使います。Parseメソッドの引数に変換したい文字列を指定すると、戻り値としてDateTime型に変換した結果を返します。

日時に変換できない文字列を指定すると、「FormatException」の例外が発生するので注意してください。

Parseメソッドで文字列をDateTime型に変換する方法

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

このプログラムでは、Parseメソッドを使って日時の文字列をDateTime型に変換しています。時間が省略されている場合には、「0:00:00」になり、日付が省略されていると現在の日付になるので注意してください。

ParseExactメソッドとは

日時の文字列がParseメソッドで変換できないような独自の書式の場合には、ParseExactメソッドを使用します。ParseExactメソッドは、第1引数に文字列を指定し、第2引数にフォーマットを指定します。

第3引数にカルチャ固有の書式情報を指定しますが、通常は「null」を指定すれば問題ありません。

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

ParseExactメソッドで文字列をDateTime型に変換する方法

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

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

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string strTime = "2018/05/01 12:34:56";
            string format = "yyyy/MM/dd HH:mm:ss";

            DateTime dTime = DateTime.ParseExact(strTime, format, null);
            Console.WriteLine(dTime);

            strTime = "2018年05月01日 12時34分56秒";
            format = "yyyy年MM月dd日 HH時mm分ss秒";
            dTime = DateTime.ParseExact(strTime, format, null);
            Console.WriteLine(dTime);

            strTime = "20180501123456";
            format = "yyyyMMddHHmmss";
            dTime = DateTime.ParseExact(strTime, format, null);
            Console.WriteLine(dTime);

            Console.ReadKey();
        }
    }
}

実行結果:

2018/05/01 12:34:56
2018/05/01 12:34:56
2018/05/01 12:34:56

このプログラムではParseExactメソッドを使ってそれぞれの日時の文字列をフォーマットを指定してDateTime型に変換しています。

まとめ

いかがでしたか?

今回はDateTime構造体の「Parseメソッド」と「ParseExactメソッド」で日時の文字列をDateTime型に変換する方法を解説しました。フォーマットは自由に指定できるので、ぜひ活用してくださいね。

もし、日時の変換方法を忘れてしまったらこの記事を確認してください!

この記事を書いた人

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

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

目次