DateTime.ParseExact字符串格式异常

时间:2010-01-04 16:31:31

标签: c# string datetime parsing

我正在尝试使用以下C#代码将字符串转换为datetime,

DateTime dTo = DateTime.ParseExact(dateTo, "mm/dd/yyyy", CultureInfo.InvariantCulture);

每次我将dateTo传递给2010年1月1日它失败,而是需要字符串为01/01/2010。

我应该使用什么字符串格式来支持01/01/2010和1/1/2010?

3 个答案:

答案 0 :(得分:16)

使用以下日期格式表达式,您可以使用单个或两位数的日期和月份元素。

"M/d/yyyy"

请注意,大写M很重要 - 小写m是分钟的占位符。

您可以找到与日期格式字符串here相关的更多信息。

您可以使用以下Powershell命令对其进行测试。

[DateTime]::ParseExact('01/01/2010', 'M/d/yyyy', $null)

答案 1 :(得分:3)

资本M是月,我认为小米是分钟。

但就问题而言,请使用Parse。 ParseExact暗示您知道输入的确切格式。

答案 2 :(得分:1)

您可以尝试以下格式:MM/dd/yyyy,但我认为没有单一格式字符串可以支持这两种输入。您可以使用dateTo测试M/d/yyyy字符串的长度是否小于10个字符,否则MM/dd/yyyy