奇怪的FormatException与DateTime

时间:2014-03-14 18:55:28

标签: c# datetime

使用DateTime.ParseExact()

时,我有一个奇怪的行为

工作正常

DateTime.ParseExact("130314111405.000", "ddMMyyhhmmss.fff", null);

格式异常

DateTime.ParseExact("130314130001.000", "ddMMyyhhmmss.fff", null);

感谢任何有用的想法。

3 个答案:

答案 0 :(得分:4)

您的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); 

答案 1 :(得分:2)

问题:您正尝试使用较小的13解析小hh小时值,小hh不支持,因为来自MSDN: hh Custom Format

  

小时,使用从 01 12 的12小时制。

因此,您需要使用来自MSDN HH Custom Format

HH代替hh
  

小时,使用从 00 23 的24小时制。

试试这个:

 DateTime.ParseExact("130314130001.000", "ddMMyyHHmmss.fff", null);

答案 2 :(得分:1)

使用DateTime.ParseExact("130314130001.000", "ddMMyyHHmmss.fff", null);

仅适用于12小时的时间,其中HH为24小时