PR

[C# DateTime] 文字列で書かれた日付を日付型に変換する

文字列で書かれた日付を日付型(DateTime)に変換するにはDateTime.Parseメソッドを使います。

スポンサーリンク

Parseメソッドの使い方

Parseメソッドの引数には文字列で書かれた日付を指定します。

using System;
class Program
{
    public static void Main()
    {
        // 文字列の日付を日付型に変換する
        DateTime date1 = DateTime.Parse("2020/05");
        DateTime date2 = DateTime.Parse("2020/05/10");
        DateTime date3 = DateTime.Parse("2020/05/10 18:30:10");
        DateTime date4 = DateTime.Parse("2020/05/10 18:30:10.123");
        DateTime date5 = DateTime.Parse("18:30:10");

        // 結果表示用メソッド
        string outputDate(DateTime date) => $"Year={date.Year}, Month={date.Month}, Day={date.Day}, Hour={date.Hour}, Minute={date.Minute}, Second={date.Second}, MiliSecond={date.Millisecond}";
        // 結果の表示
        Console.WriteLine($"{outputDate(date1)}");
        Console.WriteLine($"{outputDate(date2)}");
        Console.WriteLine($"{outputDate(date3)}");
        Console.WriteLine($"{outputDate(date4)}");
        Console.WriteLine($"{outputDate(date5)}");
    }
}
Year=2020, Month=5, Day=1, Hour=0, Minute=0, Second=0, MiliSecond=0
Year=2020, Month=5, Day=10, Hour=0, Minute=0, Second=0, MiliSecond=0
Year=2020, Month=5, Day=10, Hour=18, Minute=30, Second=10, MiliSecond=0
Year=2020, Month=5, Day=10, Hour=18, Minute=30, Second=10, MiliSecond=123
Year=2020, Month=5, Day=25, Hour=18, Minute=30, Second=10, MiliSecond=0

日の指定がない場合、1日が設定されます。
時間の指定がない場合、0時0分0秒になります。
時間だけを指定した場合、現在の日付になります。

Parseメソッドは日付に変換できない文字列が指定された場合エラーになります。
変換できるかどうか判定するにはDateTime.TryParseメソッドを使います。

ちなみにサンプルで使用している表示用のメソッドはローカル関数と呼ばれるものです。気になる方は、[C# 入門] ローカル関数(メソッド内にメソッドを定義する)を見てみてください。

スポンサーリンク

文字列が日付に変換できるか判定する(TryParse)

TryParseメソッドの第1引数に文字列で書かれた日付、第2引数には文字列から変換した日付を格納する変数(DateTime型)をoutで指定します。
戻り値は日付に変換できる場合にTrue、できない場合にFalseが返されます。

out引数について知りたい方は、[C#] メソッドの引数にoutを付けて出力として利用するを見てください。

using System;
class Program
{
    public static void Main()
    {
        // 結果の表示用メソッド
        string outputDate(DateTime date) => $"Year={date.Year}, Month={date.Month}, Day={date.Day}, Hour={date.Hour}, Minute={date.Minute}, Second={date.Second}, MiliSecond={date.Millisecond}";

        // TryParseメソッドで日付に変換できるか判定
        string strDate1 = "2020-05-30 13:14:15";
        if (DateTime.TryParse(strDate1, out var date1))
        {
            // 日付に変換できた
            Console.WriteLine($"「{strDate1}」は日付に変換できます。");
            Console.WriteLine($"変換した日付={outputDate(date1)}");
        }
        else 
        {
            // 日付に変換できなかった
            Console.WriteLine($"「{strDate1}」は日付に変換できません。");
        }

        string strDate2 = "abcdef";
        if (DateTime.TryParse(strDate2, out var date2))
        {
            Console.WriteLine($"「{strDate2}」は日付に変換できます。");
            Console.WriteLine($"変換した日付={outputDate(date2)}");
        }
        else
        {
            Console.WriteLine($"「{strDate2}」は日付に変換できません。");
        }
    }
}
「2020-05-30 13:14:15」は日付に変換できます。
変換した日付=Year=2020, Month=5, Day=30, Hour=13, Minute=14, Second=15, MiliSecond=0
「abcdef」は日付に変換できません。

C# 記事まとめページに戻る(他のサンプルコードもこちら)

C# プログラミング講座
C#についての記事まとめページです。開発環境VisualStudioのインストール方法や使い方、プログラミングの基礎知識についてや用語説明の記事一覧になっています。講座の記事にはすぐに実行できるようにサンプルコードを載せています。

コメント