Convert iso8601 string date time format to date in Java [duplicate]

怎甘沉沦 提交于 2019-12-05 05:08:41

问题


All,

I know I have asked a similar question on parsing an ISO8601 date string into a Date using Java before, but this is a more specific problem using the SimpleDateFormat class.

I have read the article Wiki ISO8601 Date.

I have been supplied an XML file from a customer which has a date and time with the following format:

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

According to the Wiki article this is valid which is fair enough.

Given the following code to parse this string, a ParseException is thrown with the message "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);

The problem is with the colon in the timezone specifier. +02:00 in the timezone causes the exception to be thrown. +0200 works fine.

Question is, is it possible to parse this type of string with the SimpleDateFormat?

Thanks

Andez


回答1:


No, using SimpleDateFormat, parsing this date is not possible (at least not in jdk 6 or lower). We had to write our own adapter for this ourselves.

Note, since this format is a valid part of XML Schema, you can use the DatatypeConverter.parseDateTime() method to parse this date.




回答2:


The best answer I have found is on this question.

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

Quote: The easier solution is possibly to use the data type converter in JAXB, since JAXB must be able to parse ISO8601 date string according to the XML Schema specification. javax.xml.bind.DatatypeConverter.parseDateTime("2010-01-01T12:00:00Z") will give you a Calendar object and you can simply use getTime() on it, if you need a Date object.



来源:https://stackoverflow.com/questions/12201233/convert-iso8601-string-date-time-format-to-date-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!