概要
C#で文字列からDateTime型に変換するには「Parse」もしくは「TryParth」メソッドが使用できます。
Parseメソッド
// 日付・時刻あり
string strDateTime = "2020/10/22 15:01:11";
DateTime dateTime = DateTime.Parse(strDateTime);
Console.WriteLine(dateTime.ToString("yyyy/MM/dd HH:mm:ss"));
// 時刻省略
string strDate = "2020/10/22";
DateTime dateTimeFromDate = DateTime.Parse(strDate);
Console.WriteLine(dateTimeFromDate.ToString("yyyy/MM/dd HH:mm:ss"));
// 日付省略
string strTime = "15:01:11";
DateTime dateTimeFromTime = DateTime.Parse(strTime);
Console.WriteLine(dateTimeFromTime.ToString("yyyy/MM/dd HH:mm:ss"));
実行結果
2020/10/22 15:01:11
2020/10/22 00:00:00
2020/08/22 15:01:11
日付・時刻は省略できます。
時刻未入力の場合は 00:00:00 が入ります。
日付未入力の場合は 現在日付が入ります。
###例外
渡す文字列がnullの場合は「ArgumentNullException」が発行されます。
渡す文字列が日時として判別不可能な場合は「FormatException」が発行されます。
TryParseメソッド
第1引数に変換する文字列を指定し、第2引数に指定したDateTime型に変換後の日時が格納されます。また変換に成功したかどうかを示す値を返します。
string strDateTime = "2020/10/22 15:01:11";
DateTime dateTime;
if (DateTime.TryParse(strDateTime, out dateTime))
{
Console.WriteLine("成功!");
Console.WriteLine(dateTime.ToString("yyyy/MM/dd HH:mm:ss"));
} else {
Console.WriteLine("失敗!");
Console.WriteLine(dateTime);
}
実行結果
成功!
2020/10/22 15:01:11
参考
https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime.parse?view=netcore-3.1
https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime.tryparse?view=netcore-3.1