问题陈述:
尝试使用 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中文网其他相关文章!