【发布时间】:2009-10-12 09:57:21
【问题描述】:
我正在尝试解析一些 xml 文件中写入的时间戳。大多数时间戳类似于 2009-07-22-07:00 但有时我发现它们类似于 2009-07-22Z 或 2009 -07-22z。请帮助我如何解释这些 Z 以及如何解析它们。我认为这些 z 或 Z 与时区有关。像典型时间戳一样解析它们的任何解决方法?
【问题讨论】:
我正在尝试解析一些 xml 文件中写入的时间戳。大多数时间戳类似于 2009-07-22-07:00 但有时我发现它们类似于 2009-07-22Z 或 2009 -07-22z。请帮助我如何解释这些 Z 以及如何解析它们。我认为这些 z 或 Z 与时区有关。像典型时间戳一样解析它们的任何解决方法?
【问题讨论】:
补充 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 文档。
【讨论】:
Z 表示祖鲁语。你是对的,它确实代表时区 - 特别是UTC。
【讨论】:
你是对的。尾随字符指的是时区。
Z 指的是“祖鲁”时区,它只是 UTC(或 GMT)时区的简写。
您可能还会看到尾随的 +X 或 -X。这些是指时间戳的 GMT 偏移量。例如2002-05-30+06:00 表示时间为 GMT + 6 小时零分钟。
【讨论】:
【讨论】: