如何解读这些时间戳?

Ram*_*Ram 3 java datetime parsing

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

Jes*_*per 7

要添加到fvu的答案:遗憾的是,Java没有任何内置的方法来解析(或格式化ISO8601的日期和时间格式,更不幸的是,不能(轻松)解析ISO8601日期java.text.SimpleDateFormat.

着名且受欢迎的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();
Run Code Online (Sandbox Code Playgroud)

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


Gre*_*reg 5

Z方法祖鲁语.你是对的,它确实代表了时区 - 特别是UTC.


Gle*_*len 5

你说的没错.尾随字符指的是时区.

Z指的是"Zulu"时区,它只是UTC(或GMT)时区的简写.

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