DateTime.ParseExact字符串格式异常

7

我正在尝试使用以下C#代码将字符串转换为日期时间:

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

每次我将 dateTo 设为 1/1/2010 时,它都会失败,相反,它需要字符串为 01/01/2010。

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


这篇文章虽然不是完全相同的内容,但涉及到了类似的领域:https://dev59.com/iHM_5IYBdhLWcg3wdy5g - DOK
3个回答

16

使用以下日期格式表达式可以让你使用单个或双个数字的日和月份。

"M/d/yyyy"
请注意大写字母M的重要性 - 小写字母m是分钟的占位符。
您可以在此处找到与日期格式字符串相关的更多信息 您可以使用以下PowerShell命令来测试它们。
[DateTime]::ParseExact('01/01/2010', 'M/d/yyyy', $null)

1
这样做不会让你有前导零吗? - gingerbreadboy
3
我不知道这个,绿色蘑菇给您先生! - gingerbreadboy

3

大写字母 M 表示月份,小写字母 m 可能是分钟。

但是回到问题的要点,使用 Parse。ParseExact 意味着您知道输入的确切格式。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接