[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# 入門] ローカル関数(メソッド内にメソッドを定義する) | ヤスノログ
C#ではメソッドの中にメソッドを定義して使用することが出来ます。メソッド内で定義されたメソッドのことをローカル関数といいます。C#7.0からの機能です。 ローカル関数は…
文字列が日付に変換できるか判定する(TryParse)
TryParseメソッドの第1引数に文字列で書かれた日付、第2引数には文字列から変換した日付を格納する変数(DateTime型)をoutで指定します。
戻り値は日付に変換できる場合にTrue、できない場合にFalseが返されます。
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」は日付に変換できません。
out引数について知りたい方は、こちらを見てください。
ヤスノログ


[C#] メソッドの引数にoutを付けて出力として利用する | ヤスノログ
メソッドの定義で引数に out と付いているものがあります。今回はout引数を使ったメソッドの話です。 結論から書くと、outはメソッドの処理内でその引数に値を設定するとき…