【问题标题】:DateTime.ParseExact not working at all, why?DateTime.ParseExact 根本不起作用,为什么?
【发布时间】:2011-05-10 16:39:36
【问题描述】:

我正在尝试将以下 String 解析为 c# 中的 DateTime 对象:

DateTime.ParseExact("20101108 230125", "yyyyMMdd hhmmss", null)

虽然值看起来正确,但 ParseExact 方法只是不断给我以下信息:

字符串未被识别为有效的日期时间。

谁能告诉我为什么以及如何解析上面的字符串而无需手动操作? ParseExact不应该是为了这种场合吗?

【问题讨论】:

    标签: c# .net datetime date-format datetime-parsing


    【解决方案1】:

    尝试使用:

    var dt = DateTime.ParseExact("20101108 230125", "yyyyMMdd HHmmss", null)
    

    “hh”代表 12 小时,“HH”代表 24 小时。

    【讨论】:

      【解决方案2】:

      你弄错了几个小时的格式,应该是大写的:

      DateTime.ParseExact("20101108 230125","yyyyMMdd HHmmss", null)
      

      小写的hh 指定时间使用12 小时制(上午/下午)。大写的HH 是 24 小时制时间。

      详情请查看documentation of custom DateTime format strings

      【讨论】:

      • 为什么会导致异常?就个人而言,我希望 hh 将 23 转换为 11 而不是抛出异常。是 ParseExact 导致的吗?
      • @Marcus: ParseExact 会照他说的做;使用指定的 exact 格式解析字符串。由于hh 告诉它在该位置期望12 小时时钟时间值,23 显然超出了可接受值的范围。它解析确切的字符串,不进行任何转换。所以是的,异常是由ParseExact 方法引发的。
      • 为扩展解释干杯。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 2017-05-30
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多