解析简单日期时间

时间:2010-08-23 20:11:10

标签: c# parsing datetime

DateTime dt = DateTime.ParseExact("1122010", "Mddyyyy", System.Globalization.CultureInfo.CurrentCulture);

抛出此异常:String未被识别为有效的DateTime。

我确信本月缺少领先0。什么是正确的格式字符串?

3 个答案:

答案 0 :(得分:12)

我建议使用格式“MMddyyyy”并确保输入参数至少包含8个字符。例如:

DateTime dt = DateTime.ParseExact("1122010".PadLeft(8, '0'), "MMddyyyy", System.Globalization.CultureInfo.CurrentCulture);

如果您使用的是本月缺少前导0的数据源,则会在需要时添加。

答案 1 :(得分:4)

问题是你没有给ParseExact足够的信息来使用。

“M”表示1或2位数月份。但是你的字符串以“1122”开头。是1月12日还是11月22日?

正如安东尼所示,唯一的解决方案是在需要时用0填充。

答案 2 :(得分:1)

单个“M”格式字符串是不可接受的,因为并非所有月份都可以用单个数字或字符唯一地表示。如前所述,您必须使用“MMddyyyy”并在必要时填充左侧字符串。