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
代表 d
和 01
代表 MM
?
如果在两者之间添加定界符或使用 dd
而不是 d
以使语法明确,则可以使解析器满意
我的日志文件中有以下格式的日期:"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
代表 d
和 01
代表 MM
?
如果在两者之间添加定界符或使用 dd
而不是 d
以使语法明确,则可以使解析器满意