問題陳述:
嘗試使用 Parse
方法將表示為 "dd/MM/yyyy" 格式的日期字符串轉換為 DateTime
對象,會導致異常,提示 "字符串未被識別為有效的 DateTime 格式"。
解釋和解決方案:
Parse
方法在解析自定義格式的字符串時,會採用當前文化的格式設置。在本例中,該字符串表示歐洲日期格式,這與默認的美國格式不同。為解決此問題,請改用 ParseExact
方法。
ParseExact
方法接受三個參數:要解析的字符串、預期的格式和格式提供程序。格式提供程序指定要應用的特定於文化的格式規則。對於給定的示例:
<code class="language-csharp">this.Text = "22/11/2009"; DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);</code>
將 null
作為格式提供程序會默認為當前文化的設置。或者,您可以指定特定的區域性,例如:
<code class="language-csharp">DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", CultureInfo.GetCultureInfo("en-GB"));</code>
Parse 和 ParseExact 之間的區別:
選擇最佳答案的方面:
類型安全: 兩個答案都提供類型安全,因為解析的結果是有效的 DateTime
對象。
性能: 兩種方法的性能都差不多,因為它們都涉及將字符串解析為日期表示形式。
靈活性: ParseExact
通過允許自定義目標格式提供了更大的靈活性,使其更適合處理具有非標準格式或不同文化的日期。
以上是如何在 C# 中正確解析特定於文化的日期字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!