Convertir el formato de fecha y hora de la cadena iso8601 hasta la fecha en Java

Todas,

Sé que he formulado una pregunta similar sobre el análisis de una cadena de fecha ISO8601 en una fecha usando Java antes, pero este es un problema más específico al usar la clase SimpleDateFormat.

He leído el artículo Wiki ISO8601 Fecha .

Se me ha proporcionado un archivo XML de un cliente que tiene una fecha y hora con el siguiente formato:

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

De acuerdo con el artículo de Wiki, esto es válido, lo cual es justo.

Dado el siguiente código para analizar esta cadena, se lanza una excepción ParseException con el mensaje “Fecha no analizable:” 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); 

El problema es con los dos puntos en el especificador de zona horaria. +02: 00 en la zona horaria hace que se lance la excepción. +0200 funciona bien.

La pregunta es, ¿es posible analizar este tipo de cadena con SimpleDateFormat?

Gracias

Andez

No, utilizando SimpleDateFormat, no es posible analizar esta fecha (al menos no en jdk 6 o inferior). Tuvimos que escribir nuestro propio adaptador para esto nosotros mismos.

Tenga en cuenta que, como este formato es una parte válida del esquema XML, puede usar el método DatatypeConverter.parseDateTime () para analizar esta fecha.

La mejor respuesta que he encontrado está en esta pregunta.

Conversión de cadenas compatibles con ISO 8601 a java.util.Date

Cita: La solución más fácil es posiblemente utilizar el convertidor de tipo de datos en JAXB, ya que JAXB debe poder analizar la cadena de fecha ISO8601 de acuerdo con la especificación del esquema XML. javax.xml.bind.DatatypeConverter.parseDateTime (“2010-01-01T12: 00: 00Z”) le dará un objeto de Calendario y simplemente puede usar getTime (), si necesita un objeto Date.