DateTime.ParseExact 对于 "dMMyyHHmmss" 格式不起作用 (c#)

DateTime.ParseExact for "dMMyyHHmmss" format not working (c#)

我的日志文件中有以下格式的日期:"dMMyyHHmmss".

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

'String '.....' was not recognized as a valid 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);

为什么我不能使用那种格式有什么想法吗?

那是因为 LL 解析器的格式有些模糊。

你得到的字符串是10118010101

解析器读取 1 并运行,好的,它是 1 for d
然后它读取 0 和它的混淆,它应该是 10 代表 d 还是应该是 1 代表 d01 代表 MM?

如果在两者之间添加定界符或使用 dd 而不是 d 以使语法明确,则可以使解析器满意