2011-11-16 9 views
8

Qualcuno potrebbe dirmi il motivo per cui sto ottenendo java.text.ParseException: Unparseable date nel codice seguente:java.text.ParseException: Data di analizzarlo:

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 


public class Testdate { 
    public static void main(String args[]) 
    { 
     String text = "2011-11-19T00:00:00.000-05:00"; 
     DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
     try { 
      Date parsed = sdf.parse(text.trim()); 
      System.out.println(parsed); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

risposta

9

suo perché del colon nel tuo fuso orario. Rimuovilo e funzionerà:

String text = "2011-11-19T00:00:00.000-0500"; 
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
+0

hai utilizzato una stringa diversa, ma la stringa effettiva è "2011-11-19T00: 00: 00.000-05: 00"; , Voglio che anche i due punti – Pawan

+0

siano solo la spiegazione del perché fallisce, e un modo per aggirare il problema. – Chris

+0

Vorrei indagare sul motivo per cui si ottiene una data, che non è conforme alle RFC. È possibile risolvere il problema semplicemente rimuovendo gli ultimi due punti, ma ovviamente è un pessimo lavoro. – Chris

5

Perché la Z parte del sostegno SimpleDateFormat s' modello non gestisce compensazioni con due punti in.

Suggerisco di utilizzare Joda Time invece, utilizzando ISODateFormat.dateTime() per ottenere un formattatore appropriato.

(Vedi questo similar-but-not-quite-the-same-question da prima di oggi per ulteriori informazioni.)

Problemi correlati