代码之家  ›  专栏  ›  技术社区  ›  skaffman

将带有时区的xs:date解析为jodalocaldate

  •  3
  • skaffman  · 技术社区  · 14 年前

    将XML文档中的日期和时间解析为JodaTime对象时,我使用一组通用的转换实用程序,通常使用 org.joda.time.format.ISODateTimeFormat

    xs:date 格式的值 2010-08-19Z . 这是一个非常有效的解释 xs:日期 ISODateTimeFormat -生成 LocalDate 我尝试过的解析器会接受它。我能找到的最接近的就是 ISODateTimeFormat.dateParser() 2010-08-19TZ 2010年8月19日 (注意 T

    这是非常令人恼火的,因为Joda和xmlschema都应该严格遵守ISO日期/时间格式规则,但是它们中的任何一个都没有,或者规范是模糊的。

    ISODateTimeFormat -将读取该值的源解析程序?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jim Garrison    14 年前

    我相信根据ISO-8601,‘Z’是时间值的一部分。“T”分隔符仅用于创建组合的日期/时间值。严格理解这一点意味着“Z”不能出现在没有时间值的日期之后,时间值可以是空的,因此“看起来很奇怪” 2010-08-18TZ .

    这似乎是xs:date和ISO-8601定义之间的轻微阻抗不匹配。

    编辑:我找到了一份 ISO 8601 XML Schema Datatypes 规格。

    与其从头开始编写,不如用一个简单的包装器将带有时区的xs:date实例转换成相应的ISO-8601值(即只插入“T”),然后使用现有的 ISODateTimeFormat.dateParser() ?