2012-03-14 5 views
6

Desidero definire un modello per Java SimpleDaterFormat per analizzare le stringhe esistenti.Qual è lo schema corretto per analizzare il formato del fuso orario con SimpleDateFormat

Le date esistenti sono: 2011-05-02T13:40:00+02:00.

Ho provato con modelli diversi, ma ho ottenuto ParseExceptions. Il problema sembra essere il formato del fuso orario.

Stampa del tracciato in 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

Ma come posso ottenere

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

sto usando Java 6, Java 7.

risposta

5

Se è possibile utilizzare Java 7 o successiva, è possibile utilizzare il modello XXX per ottenere il fuso orario di guardare come 02: 00:

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

In caso contrario potrebbe essere necessario manipolare la stringa della data per rimuovere il colon dal fuso orario befor Lo sto analizzando.

+0

Thx. Sì, il supporto per il fuso orario ISO 8601 è realizzato con Java 7, ma la mia applicazione funziona con Java 1.6. – cuh

+1

Forse puoi semplicemente rimuovere i due punti prima di passarli al formattatore, quindi? Penso che questo regex dovrebbe avere un effetto solo se i due punti sono lì: dateString.replaceFirst ("(\\ d \\ d): (\\ d \\ d) $", "$ 1 $ 2") – matts

+0

Non posso modificare prima la stringa Uso uno strumento per importare un set di dati e posso solo definire un pattern. – cuh

0

So che è una domanda un po 'vecchia, ma qualcun altro potrebbe beneficiare del mio suggerimento. È possibile utilizzare JodaTime. Come biblioteca documentation significa:

Zona: uscite 'Z' compensati senza due punti, 'ZZ' in uscita l'offset con due punti, 'ZZZ' o più uscite la zona id.

Si può usare anche con Java 6. Avete altri esempi in this question