NoCurrentDateDefault
は、変換しようとする文字列中に日付がない場合、現在の日付ではなく 1年1月1日 (DateTime.Min)を表すものとして変換を行います。 なお、このオプションはDateTimeOffset.Parseでは無効で、指定した場合は例外ArgumentExceptionがスローされます。
なお、日付のみで時刻がない場合は常に00:00:00
を表すものとして変換を行います。 これはDateTimeおよびDateTimeOffsetともに同じ動作となります。
DateTime.ParseメソッドでDateTimeStyles.NoCurrentDateDefaultを指定し、今日ではなく1年1月1日の時刻として変換する
using System;
using System.Globalization;
class Sample {
static void Main()
{
var inputs = new string[] {
"2013/04/03 15:00:30", // 日付と時刻
"15:00:30", // 時刻のみ
"15:00", // 時分のみ
};
var styles = new DateTimeStyles[] {
DateTimeStyles.None, // オプション指定なし (デフォルトの動作、今日の日付が設定される)
DateTimeStyles.NoCurrentDateDefault, // 日付がない場合、1年1月1日を設定する
};
// 文字列をDateTimeへ変換
foreach (var input in inputs) {
foreach (var style in styles) {
var dt = DateTime.Parse(input, null, style);
Console.WriteLine("{0,-20} ({1,-22}) -> {2}", input, style, dt);
}
Console.WriteLine();
}
}
}
実行結果例
2013/04/03 15:00:30 (None ) -> 2013/04/03 15:00:30 2013/04/03 15:00:30 (NoCurrentDateDefault ) -> 2013/04/03 15:00:30 15:00:30 (None ) -> 2013/03/02 15:00:30 15:00:30 (NoCurrentDateDefault ) -> 0001/01/01 15:00:30 15:00 (None ) -> 2013/03/02 15:00:00 15:00 (NoCurrentDateDefault ) -> 0001/01/01 15:00:00