2012-03-14 12 views
6

Quiero definir un patrón para Java SimpleDaterFormat para analizar las cadenas existentes.Cuál es el patrón correcto para analizar el formato de zona horaria con SimpleDateFormat

Las fechas existentes se ven así: 2011-05-02T13:40:00+02:00.

Probé con diferentes patrones, pero obtuve ParseExceptions. El problema parece ser el formato de zona horaria.

Impresión del patrón en Java:

  • yyyy-MM-dd'T'HH:mm:ssZ
    • 2012-03-14T15:40:44+0100
  • yyyy-MM-dd'T'HH:mm:ssz
    • 2012-03-14T15:41:58MEZ

Pero, ¿cómo puedo obtener

  • ???
    • 2011-05-02T13:40:00+02:00

estoy usando Java 6, no Java 7.

Respuesta

5

Si puede utilizar Java 7 o posterior, puede utilizar el patrón XXX para obtener la zona horaria para mirar como 02: 00:

yyyy-MM-dd'T'HH:mm:ssXXX 

de lo contrario puede que tenga que manipular la cadena de fecha para extirpar el colon de la zona horaria se acaben e analizándolo

+0

Thx. Sí, el soporte para la zona horaria ISO 8601 se realiza con Java 7, pero mi aplicación se ejecuta con Java 1.6. – cuh

+1

¿Tal vez simplemente puede quitar el colon antes de pasarlo al formateador? Creo que esta expresión regular solo debería tener un efecto si los dos puntos están ahí: dateString.replaceFirst ("(\\ d \\ d): (\\ d \\ d) $", "$ 1 $ 2") – matts

+0

No puedo modificar la cuerda primero. Utilizo una herramienta para importar un conjunto de datos y solo puedo definir un patrón. – cuh

0

Sé que es una pregunta un poco vieja, pero alguien más podría beneficiarse de mi pista. Puede usar JodaTime. Como biblioteca documentation significa:

Zona: salidas 'Z' compensados ​​sin un colon, 'ZZ' emite el desplazamiento con un colon, 'ZZZ' o más salidas el ID de zona.

Se puede utilizar también con Java 6. Usted tiene más ejemplos en this question

Cuestiones relacionadas