首页 文章

在Java中将iso8601字符串日期时间格式转换为日期[重复]

提问于
浏览
2

这个问题在这里已有答案:

所有,

我知道在使用Java之前将ISO8601日期字符串解析为Date之前我已经提出了类似的问题,但这是使用SimpleDateFormat类的更具体的问题 .

我看过文章Wiki ISO8601 Date .

我从客户那里获得了一个XML文件,其日期和时间格式如下:

2012-08-24T12:15:00+02:00

根据维基文章,这是有效的,这是公平的 .

给定以下代码来解析此字符串,将抛出ParseException,并显示消息“Unparseable date:”2012-08-24T12:15:00 02:00“” .

String inputDate = "2012-08-24T12:15:00+02:00";
String format = "yyyy-MM-dd'T'HH:mm:ssz";

SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = sdf.parse(inputDate);

问题在于时区说明符中的冒号 . 时区中的02:00导致抛出异常 . 0200工作正常 .

问题是,是否可以使用SimpleDateFormat解析这种类型的字符串?

谢谢

Andez

2 回答

  • 1

    我找到的最佳答案就是这个问题 .

    Converting ISO 8601-compliant String to java.util.Date

    Quote:更简单的解决方案可能是在JAXB中使用数据类型转换器,因为JAXB必须能够根据XML Schema规范解析ISO8601日期字符串 . 如果需要Date对象,javax.xml.bind.DatatypeConverter.parseDateTime(“2010-01-01T12:00:00Z”)将为您提供一个Calendar对象,您可以在其上使用getTime() .

  • 4

    不,使用SimpleDateFormat,无法解析此日期(至少不在jdk 6或更低版本中) . 我们必须自己编写自己的适配器 .

    注意,由于此格式是XML Schema的有效部分,因此可以使用DatatypeConverter.parseDateTime()方法来解析此日期 .

相关问题