0

2 つの文字列を DateTime に解析するときに、この奇妙な動作に気付きました。最初の文字列 (例外が発生) "20/10/2013 3:08:30 AM" 2 番目の文字列 (例外なく正しく変換) "9/10/2013 3:09:37 AM"

変換に使用されるコードは次のとおりです。

string date_1 = "20/10/2013 3:08:30 AM";
string date_2 = "9/10/2013 3:09:37 AM"; 
try
{
DateTime d1 = DateTime.parse(date_1, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);   //throws exception (String was not recognized as a valid DateTime)
} catch (Exception ex) { throw ex; }
DateTime d2 =  DateTime.parse(date_2, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);

同じ形式で完全な日付を表す2つの文字列がこれを行う理由を誰か説明できますか?

よろしくお願いします。

4

2 に答える 2

2

米国の日付表記では最初のフィールドとして月が想定されるため、これがスローされます。

string d = "20/10/2013 3:08:00 AM";
Console.WriteLine(DateTime.Parse(d, new CultureInfo("en-US")));

InvariantCulture についても同様です。

これはうまくいきます:

DateTime.Parse(d, new CultureInfo("nl-NL"))
于 2013-10-21T06:19:42.827 に答える