[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# プログラミング講座に戻る

コメント

タイトルとURLをコピーしました