【问题标题】:How to interpret the these time stamps?如何解释这些时间戳?
【发布时间】:2009-10-12 09:57:21
【问题描述】:

我正在尝试解析一些 xml 文件中写入的时间戳。大多数时间戳类似于 2009-07-22-07:00 但有时我发现它们类似于 2009-07-22Z2009 -07-22z。请帮助我如何解释这些 Z 以及如何解析它们。我认为这些 z 或 Z 与时区有关。像典型时间戳一样解析它们的任何解决方法?

【问题讨论】:

    标签: java datetime parsing


    【解决方案1】:

    补充 fvu 的答案:不幸的是,Java 没有任何内置方法来解析(或格式化 ISO8601 日期和时间格式,更不幸的是,无法(轻松)使用 java.text.SimpleDateFormat 解析 ISO8601 日期。

    著名且流行的Joda Time 库确实对 ISO8601 日期和时间有很好的支持。

    编辑:从 Java 5 开始,标准 API 中有一些类可以解析和格式化 XML 文档中常用的标准格式的日期和时间。解析日期:

    import java.util.Calendar;
    import java.util.Date;
    import javax.xml.datatype.DatatypeFactory;
    import javax.xml.datatype.XMLGregorianCalendar;
    
    // ...
    
    String dateString = "..."; // wherever you get this from
    XMLGregorianCalendar xcal = DatatypeFactory.newInstance().newXMLGregorianCalendar(dateString);
    
    Calendar cal = xcal.toGregorianCalendar();
    Date date = cal.getTime();
    

    同样有一些方法可以将日期格式化为字符串。 有关详细信息,请参阅这些类的 API 文档。

    【讨论】:

    • 他说了什么。只需使用 Joda 时间,您将在几个小时内感谢上述海报。
    • 它说“不能从静态上下文引用非静态方法 newXMLGregorianCalendar(java.lang.String)”。对不起,我是 Java 的新手。这里有什么工作?
    【解决方案2】:

    Z 表示祖鲁语。你是对的,它确实代表时区 - 特别是UTC

    【讨论】:

      【解决方案3】:

      你是对的。尾随字符指的是时区。

      Z 指的是“祖鲁”时区,它只是 UTC(或 GMT)时区的简写。

      您可能还会看到尾随的 +X 或 -X。这些是指时间戳的 GMT 偏移量。例如2002-05-30+06:00 表示时间为 GMT + 6 小时零分钟。

      【讨论】:

        【解决方案4】:

        XML 使用 ISO8601 时间格式,因此该标准是在 XML 中查找所有与时间相关的事物的第一个位置。

        【讨论】:

        • 一些吹毛求疵。 1) 它是基于 ISO-8601 指定日期的 XML Schema ...基本 XML 规范(以及 DOM 和解析器)没有任何数据类型的概念。 2) XML Schema 中的时间和持续时间类型仅基于 ISO-8601。如果您详细阅读 XML Schema 规范,您会发现存在细微差别。
        • @Stephen - 确实,你是对的。 w3.org/TR/xmlschema-2/#isoformats 了解这些偏差的概述。
        猜你喜欢
        • 1970-01-01
        • 2016-02-16
        • 2011-09-01
        • 2017-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多