Parseメソッドは、日付のみ・時刻のみといった不完全な日時を表す文字列も解析出来ます。 この際、時刻部分に欠損があれば0時0分0秒、日付部分に欠損があれば現在の日付を表すものとして扱われます。 DateTimeOffset.Parseメソッドの場合、オフセット値に欠損がある場合はローカル時刻のオフセット値が設定されます。
DateTime/DateTimeOffset.Parseメソッドで不完全な日時の文字列を変換する
using System;
class Sample {
static void Main()
{
var inputs = new string[] {
"Mon, 01 Apr 2013", // RFC1123形式・日付のみ
"15:00:30", // RFC1123形式・時刻のみ
"2013-04", // ISO8601形式・年月のみ
"15:00:30.12-05:00", // ISO8601形式・時刻のみ
"15:00", // ISO8601形式・時分のみ
"2013年4月1日", // 一般的な形式・日付のみ
};
// 文字列をDateTimeに変換
foreach (var input in inputs) {
Console.WriteLine("{0,-20} -> {1}", input, DateTime.Parse(input));
}
Console.WriteLine();
// 文字列をDateTimeOffsetに変換
foreach (var input in inputs) {
Console.WriteLine("{0,-20} -> {1}", input, DateTimeOffset.Parse(input));
}
Console.WriteLine();
}
}
実行結果
Mon, 01 Apr 2013 -> 2013/04/01 0:00:00 15:00:30 -> 2013/02/03 15:00:30 2013-04 -> 2013/04/01 0:00:00 15:00:30.12-05:00 -> 2013/02/04 5:00:30 15:00 -> 2013/02/03 15:00:00 2013年4月1日 -> 2013/04/01 0:00:00 Mon, 01 Apr 2013 -> 2013/04/01 0:00:00 +09:00 15:00:30 -> 2013/02/03 15:00:30 +09:00 2013-04 -> 2013/04/01 0:00:00 +09:00 15:00:30.12-05:00 -> 2013/02/03 15:00:30 -05:00 15:00 -> 2013/02/03 15:00:00 +09:00 2013年4月1日 -> 2013/04/01 0:00:00 +09:00