スライドショー

【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型に変換する方法を解説しました。フォーマットは自由に指定できるので、ぜひ活用してくださいね。

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

LINEで送る
Pocket

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



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

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

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

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

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

書いた人

中沢 丈

中沢 丈

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

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

おすすめコンテンツ

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

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