【发布时间】:2014-05-02 17:57:29
【问题描述】:
我正在尝试为 TV Schedule Pro (http://sourceforge.net/p/tvschedulerpro) 编写 XML 解析器。 一个特殊的挑战是解析由日期元素报告的 DateTime。
根据DTD文件:
此 DTD 中的所有日期和时间都遵循相同的格式,但基础松散 在 ISO 8601 上。它们可以是 'YYYYMMDDhhmmss' 或一些初始子字符串, 例如,如果您只知道年份和月份,则可以使用“YYYYMM”。 您还可以在末尾附加时区;如果没有明确的时区 给定,假设 UTC。示例:“200007281733 BST”、“200209”、 '19880523083000 +0300'。 (英国夏令时 == +0100。)
这是一个具有挑战性的情况,我最初考虑使用 DateTimeFormatInfo.GetAllDateTimePatterns 并使用 DateTime.TryParseExact,关于时区和带有任何分隔符的特定格式的最后一行使得无法使用上述内容。
是否有一种简洁的方法来解析上述日期时间规范,或者是否只需要在找到字符串时不断查找/添加各种模式来解析字符串(看起来几乎是无穷无尽的组合)
【问题讨论】:
-
您可能仍然可以使用 DateTime.TryParseExact,但您可能必须在拨打电话之前自己提取时区信息。
-
您是否尝试使用“YYYYMMDDhhmmss”作为 DateTime.TryParseExact 的模式参数?
-
是的,我考虑过这一点,但它不会捕获所有可能的格式,正如您从 DTD 定义中看到的那样。我正在寻找有关处理此问题的最佳方法的意见
标签: c# parsing date datetime undefined