.NET Framework
DateTimeの解析
サーチ…
ParseExact
var dateString = "2015-11-24";
var date = DateTime.ParseExact(dateString, "yyyy-MM-dd", null);
Console.WriteLine(date);
2015年11月24日12:00:00 AM
CultureInfo.CurrentCulture
を3番目のパラメータとして渡すことは、 null
を渡すことと同じことに注意してください。または、特定の文化に合格することができます。
フォーマット文字列
入力文字列は、書式文字列に一致する任意の書式にすることができます
var date = DateTime.ParseExact("24|201511", "dd|yyyyMM", null);
Console.WriteLine(date);
2015年11月24日12:00:00 AM
書式指定子ではない文字はすべてリテラルとして扱われます
var date = DateTime.ParseExact("2015|11|24", "yyyy|MM|dd", null);
Console.WriteLine(date);
2015年11月24日12:00:00 AM
書式指定子の大文字小文字問題
var date = DateTime.ParseExact("2015-01-24 11:11:30", "yyyy-mm-dd hh:MM:ss", null);
Console.WriteLine(date);
2015年11月24日11:01:30
月と分の値が間違った宛先に解析されたことに注意してください。
1文字の書式文字列は標準書式の1つでなければなりません
var date = DateTime.ParseExact("11/24/2015", "d", new CultureInfo("en-US"));
var date = DateTime.ParseExact("2015-11-24T10:15:45", "s", null);
var date = DateTime.ParseExact("2015-11-24 10:15:45Z", "u", null);
例外
ArgumentNullException
var date = DateTime.ParseExact(null, "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", null, null);
FormatException
var date = DateTime.ParseExact("", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "", null);
var date = DateTime.ParseExact("2015-0C-24", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "yyyy-QQ-dd", null);
// Single-character format strings must be one of the standard formats
var date = DateTime.ParseExact("2015-11-24", "q", null);
// Format strings must match the input exactly* (see next section)
var date = DateTime.ParseExact("2015-11-24", "d", null); // Expects 11/24/2015 or 24/11/2015 for most cultures
可能な複数のフォーマットの処理
var date = DateTime.ParseExact("2015-11-24T10:15:45",
new [] { "s", "t", "u", "yyyy-MM-dd" }, // Will succeed as long as input matches one of these
CultureInfo.CurrentCulture, DateTimeStyles.None);
文化の違いを扱う
var dateString = "10/11/2015";
var date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-US"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
日:11;月:10
date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-GB"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
日:10;月:11
TryParse
このメソッドは文字列を入力として受け取り、それをDateTime
に解析し、成功または失敗を示すブール結果を返します。呼び出しが成功すると、 out
パラメーターとして渡された変数に、解析された結果が取り込まout
ます。
解析に失敗すると、 out
パラメータとして渡された変数はデフォルト値のDateTime.MinValue
設定されます。
TryParse(string、out DateTime)
DateTime parsedValue;
if (DateTime.TryParse("monkey", out parsedValue))
{
Console.WriteLine("Apparently, 'monkey' is a date/time value. Who knew?");
}
このメソッドは、システムの地域設定とISO 8601やその他の一般的な形式などの既知の形式に基づいて入力文字列を解析しようとします。
DateTime.TryParse("11/24/2015 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24T14:28:42", out parsedValue); // true
DateTime.TryParse("Sat, 24 Nov 2015 14:28:42", out parsedValue); // true
このメソッドはカルチャ情報を受け入れないため、システムロケールを使用します。これにより予期しない結果につながる可能性があります。
// System set to en-US culture
bool result = DateTime.TryParse("24/11/2015", out parsedValue);
Console.WriteLine(result);
偽
// System set to en-GB culture
bool result = DateTime.TryParse("11/24/2015", out parsedValue);
Console.WriteLine(result);
偽
// System set to en-GB culture
bool result = DateTime.TryParse("10/11/2015", out parsedValue);
Console.WriteLine(result);
真
あなたが米国にいる場合、解析結果は10月11日ではなく11月10日であることに驚くかもしれません。
TryParse(文字列、IFormatProvider、DateTimeStyles、out DateTime)
if (DateTime.TryParse(" monkey ", new CultureInfo("en-GB"),
DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite, out parsedValue)
{
Console.WriteLine("Apparently, ' monkey ' is a date/time value. Who knew?");
}
兄弟メソッドとは異なり、このオーバーロードにより、特定のカルチャとスタイルを指定することができます。 IFormatProvider
パラメーターのnull
を渡すと、システムカルチャが使用されます。
例外
このメソッドでは、特定の条件下で例外をスローすることが可能であることに注意してください。これらは、 IFormatProvider
とDateTimeStyles
このオーバーロード用に導入されたパラメータに関連しています。
-
NotSupportedException
:IFormatProvider
はニュートラルカルチャを指定します。 -
ArgumentException
:DateTimeStyles
が有効なオプションではないか、AssumeLocal
やAssumeUniversal
などの互換性のないフラグが含まれています。
TryParseExact
このメソッドは、 TryParse
とParseExact
組み合わせとして動作します。カスタム形式を指定することができ、解析が失敗した場合に例外をスローするのではなく、成功または失敗を示すブール結果を返します。
TryParseExact(文字列、文字列、IFormatProvider、DateTimeStyles、out DateTime)
このオーバーロードは、特定の形式に対して入力文字列を解析しようとします。入力文字列は、解析するためにその形式と一致しなければなりません。
DateTime.TryParseExact("11242015", "MMddyyyy", null, DateTimeStyles.None, out parsedValue); // true
TryParseExact(string、string []、IFormatProvider、DateTimeStyles、out DateTime)
このオーバーロードは、入力文字列を一連のフォーマットに対して解析しようとします。入力文字列は、解析するために少なくとも1つの書式と一致する必要があります。
DateTime.TryParseExact("11242015", new [] { "yyyy-MM-dd", "MMddyyyy" }, null, DateTimeStyles.None, out parsedValue); // true