簡體   English   中英

不考慮CultureInfo,DateTime.Parse引發FormatException

[英]DateTime.Parse throws FormatException regardless of CultureInfo

我的機器配置了歐洲日期格式: dd/MM/yyyy

運行以下任何行時:

DateTime.Parse("11/15/2017 12:00:00 AM");
DateTime.Parse("11/15/2017 12:00:00 AM", CultureInfo.CreateSpecificCulture("en-US"));
DateTime.Parse("11/15/2017 12:00:00 AM", CultureInfo.CreateSpecificCulture("fr-FR"));
DateTime.Parse("11/15/2017 12:00:00 AM", CultureInfo.CreateSpecificCulture("en-GB"));

我越來越

System.FormatException:字符串未被識別為有效的DateTime。

為什么沒有任何文化信息允許我解析此日期? 我知道該字符串最初是在哪種文化中創建的(使用DateTime.ToString() ),但是僅此而已,所以我不想使用ParseExact ,除非有一些API可以獲取每種文化的默認格式字符串。

這在將日期模式保留為默認值的機器上有效:

var culture = CultureInfo.CreateSpecificCulture("en-US");
Console.WriteLine(culture.DateTimeFormat.ShortDatePattern);
Console.WriteLine(culture.DateTimeFormat.ShortTimePattern);
var date = DateTime.Parse("11/15/2017 12:00:00 AM", culture);
Console.WriteLine(date);

美國的默認日期格式為“ M/d/yyyy ”,時間格式為“ h:mm tt ”。

除非您針對當前區域性修改系統設置,並且該區域性是en-US,否則這適用。

如果要繞過自定義設置,請創建一個new CultureInfo("en-US", false)

如您所述,您已配置為dd/MM/yyyy

因此, "11/15/2017 12:00:00 AM"無效。 它應該是:

"15/11/2017 12:00:00 AM"`

作為一種好的做法,最好使用ParseExact ,您可以在其中指定輸入字符串的格式。 嘗試:

DateTime.ParseExact("11/15/2017 12:00:00 AM", "MM/dd/yyyy", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM