DateTime.ParseExact对于“ dMMyyHHmmss”格式不起作用(C#)

时间:2018-08-28 20:29:13

标签: c# date datetime date-parsing

我的日志文件格式如下:“ dMMyyHHmmss”。

我想抛出一个异常,如果找到的格式不完全是那个格式,我正在使用DateTime.ParseExact。问题是,我收到了带有以下消息的FormatException:

  

“字符串'.....”未被识别为有效的DateTime。

要模拟的代码是:

var format = "dMMyyHHmmss";

var date = new DateTime(2018, 1, 1, 1, 1, 1);
var strDate = date.ToString(format);
date = DateTime.ParseExact(strDate, format, CultureInfo.InvariantCulture);

有人想为什么我不能使用这种格式?

1 个答案:

答案 0 :(得分:5)

那是因为格式对于LL解析器有些含糊。

您得到的字符串是10118010101

解析器读取1并为1确定其d
然后,它读取0并感到困惑,对于10应该是d,对于1应该是d,对于{{ 1}}?

如果在两者之间添加定界符,或者使用01而不是MM来使语法清晰,则可以使解析器满意