【发布时间】:2014-03-14 18:55:28
【问题描述】:
我在使用 DateTime.ParseExact() 时有一个奇怪的行为
工作正常
DateTime.ParseExact("130314111405.000", "ddMMyyhhmmss.fff", null);
格式异常
DateTime.ParseExact("130314130001.000", "ddMMyyhhmmss.fff", null);
感谢任何有用的想法。
【问题讨论】:
我在使用 DateTime.ParseExact() 时有一个奇怪的行为
工作正常
DateTime.ParseExact("130314111405.000", "ddMMyyhhmmss.fff", null);
格式异常
DateTime.ParseExact("130314130001.000", "ddMMyyhhmmss.fff", null);
感谢任何有用的想法。
【问题讨论】:
您的 hour 部分是 24 小时格式。您需要 HH 而不是 hh 12 小时格式。
DateTime.ParseExact("130314130001.000", "ddMMyyHHmmss.fff", null);
//^^^Here
小时 13 无法使用支持 0-12 小时的 hh 解析。
我不确定你为什么将null 传递给IFormatProvider,你应该(参见this answer) 使用CultureInfo.InvariantCulture 喜欢:
DateTime.ParseExact("130314130001.000", "ddMMyyHHmmss.fff", CultureInfo.InvariantCulture);
【讨论】:
问题:您正在尝试使用小 hh 解析小时值 13,小 hh 不支持该值,因为来自 MSDN:hh Custom Format
小时,使用从 01 到 12 的 12 小时制。
所以你需要使用 HH 而不是 MSDN 中的 hh HH Custom Format
小时,使用从 00 到 23 的 24 小时制。
试试这个:
DateTime.ParseExact("130314130001.000", "ddMMyyHHmmss.fff", null);
【讨论】:
使用DateTime.ParseExact("130314130001.000", "ddMMyyHHmmss.fff", null);
hh 仅表示 12 小时制,而 HH 表示 24 小时制
【讨论】: