3

なぜ例外がスローされたのかわかりません。動作するコードは次のとおりです。

DateTime.Parse("1/12/2012 12:00:00 AM")

そして、これは例外をスローするものです:

DateTime.Parse("1/13/2012 12:00:00 AM")

スローされる例外は「FormatException」です。次のメッセージに含めてください: 「文字列は有効な日時として認識されませんでした。」

CurrentCultureの値は次のとおりです。

System.Globalization.CultureInfo.CurrentCulture
{en-MY}
Calendar: {System.Globalization.GregorianCalendar}
CompareInfo: {CompareInfo - en-MY}
CultureTypes: SpecificCultures | InstalledWin32Cultures
DateTimeFormat: {System.Globalization.DateTimeFormatInfo}
DisplayName: "English (Malaysia)"
EnglishName: "English (Malaysia)"
IetfLanguageTag: "en-MY"
IsNeutralCulture: false
IsReadOnly: true
KeyboardLayoutId: 17417
LCID: 17417
Name: "en-MY"
NativeName: "English (Malaysia)"
NumberFormat: {System.Globalization.NumberFormatInfo}
OptionalCalendars: {System.Globalization.Calendar[2]}
Parent: {en}
TextInfo: {TextInfo - en-MY}
ThreeLetterISOLanguageName: "eng"
ThreeLetterWindowsLanguageName: "ENM"
TwoLetterISOLanguageName: "en"
UseUserOverride: true

誰もがここで何が起こっているのか知っていますか?

4

1 に答える 1

14

1年に12か月しかないため;)

現在のカルチャ設定では「dd/MM/yyyy」を使用していると思います。Parseのオーバーロードを使用して、解析する文字列に使用しているカルチャの日付形式を指定します。

DateTime.Parse(String, IFormatProvider) 

または、ParseExact()メソッドを使用して、自分で形式を指定します。

var provider = CultureInfo.InvariantCulture;
var format = "M/dd/yyyy hh:mm:ss tt";

DateTime.ParseExact("1/13/2012 12:00:00 AM", format, provider);
于 2012-01-31T06:08:45.913 に答える