【问题标题】:Having issues parsing time with ParseExact使用 ParseExact 解析时间时遇到问题
【发布时间】:2015-09-01 02:37:26
【问题描述】:
DateTime time = DateTime.ParseExact("946AM", "hmmtt", CultureInfo.InvariantCulture);

这里有什么问题吗?我尝试了几种不同的格式变体,但这是我期望的一种。

谢谢

【问题讨论】:

  • Eww,你的字段是一起运行的。请注意,the "h" specifier 不是固定宽度...如果缺少分隔符,您将会遇到一些严重的问题。
  • 是的,不幸的是,这就是我们所要做的。我认为我最好只是在其中插入一些分隔符?我们可以有 1035AM、237PM、1345、120245PM 等所有我必须处理的时间。
  • 是的...我认为您可以在解析之前使用正则表达式来匹配和修复数据。

标签: c# parsing datetime format


【解决方案1】:

documentation for ParseExact 在备注部分包含以下注释:

如果 format 是不包含日期或时间分隔符的自定义格式模式(例如“yyyyMMdd HHmm”),请使用提供程序参数的不变区域性和每个自定义格式的最宽格式说明符。例如,如果您想在格式模式中指定小时,请指定较宽的格式“HH”,而不是较窄的格式“H”。

您确实缺少分隔符。更糟糕的是,您的数据至少使用了一个可变宽度字段——您可能需要自己编写一些解析逻辑,或者至少在将数据传递给ParseExact之前对其进行清理。

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多