转换ISO8601字符串日期时间格式日期在Java中[复制](Convert iso8601 str

2019-07-31 07:11发布

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

  • 转换符合ISO 8601字符串到java.util.Date 26个回答

所有,

我知道我已经问过类似的问题,在分析一个ISO8601日期字符串到之前使用Java日期,但是这是使用的SimpleDateFormat类更具体的问题。

我已阅读文章维基ISO8601日期 。

我一直在提供由具有日期和时间如下格式的客户的XML文件:

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

根据维基文章这是有效的这是不够公平。

考虑下面的代码来解析这个字符串,一个ParseException被抛出消息“无法解析的日期:‘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的这种类型的字符串?

谢谢

安第斯山脉

Answer 1:

没有,使用的SimpleDateFormat,解析该日期是不可能的(至少没有在JDK 6或更低)。 我们必须写我们自己的适配器为这个自己。

注意,因为这种格式是XML模式的有效部分,你可以使用DatatypeConverter.parseDateTime()方法来解析这个日期。



Answer 2:

最佳答案我发现是这个问题。

转换符合ISO 8601字符串到java.util.Date

引用:较容易的解决方案是可能的,以使用在JAXB的数据类型转换器中,由于JAXB必须能够根据XML模式规范来解析ISO8601日期字符串。 javax.xml.bind.DatatypeConverter.parseDateTime(“2010-01-01T12:00:00Z”)会给你一个日历对象,你可以简单的使用就可以的getTime(),如果你需要一个Date对象。



文章来源: Convert iso8601 string date time format to date in Java [duplicate]
标签: java date format