![](/img/trans.png)
[英]DateTime.Parse sometimes throws FormatException over Pipes
[英]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.