【问题标题】:DateTime.ParseExact for "dMMyyHHmmss" format not working (c#)“dMMyyHHmmss”格式的 DateTime.ParseExact 不起作用(c#)
【发布时间】:2018-08-28 20:29:12
【问题描述】:

我在日志文件中包含以下格式的日期:“dMMyyHHmmss”。

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

'String '.....' 未被识别为有效的 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);

任何想法为什么我不能使用这种格式?

【问题讨论】:

  • 很明显不是吗?如果您使用调试器,您会看到srtDate 变量是:"10118010101"。使用dMM 表示一位数日和两位数(填充)月份,那么它是10/11 吗?或1/01?它模棱两可,这就是为什么你需要分隔符

标签: c# date datetime date-parsing


【解决方案1】:

这是因为格式对 LL 解析器来说有些模糊。

你得到的字符串是10118010101

解析器读取1,然后就像,好的,它是1 for d
然后它读取0 并且它感到困惑,它应该是10 用于d 还是应该是1 用于d01 用于MM

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

【讨论】:

  • 是的,刚刚测试了这个。当您在部件之间添加空间时,它可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多