【问题标题】:strange FormatException with DateTime带有 DateTime 的奇怪 FormatException
【发布时间】:2014-03-14 18:55:28
【问题描述】:

我在使用 DateTime.ParseExact() 时有一个奇怪的行为

工作正常

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

格式异常

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

感谢任何有用的想法。

【问题讨论】:

    标签: c# datetime


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      所以你需要使用 HH 而不是 MSDN 中的 hh HH Custom Format

      小时,使用从 0023 的 24 小时制。

      试试这个:

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

      【讨论】:

        【解决方案3】:

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

        hh 仅表示 12 小时制,而 HH 表示 24 小时制

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-25
          • 1970-01-01
          • 1970-01-01
          • 2016-07-14
          • 1970-01-01
          • 1970-01-01
          • 2016-12-07
          相关资源
          最近更新 更多