2013-08-28 7 views
16

Qualcuno può dirmi perché nel mondo ho ottenuto questa eccezione?Data non analizzabile: "2013-07-11T13: 41: 22.000Z" (con offset 23)

08-28 08: 47: 05,246: D/DateParser (4238): String ricevuto per l'analisi è 2013-08-05T12: 13: 49.000Z

private final static String DATE_FORMAT_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; 


public static Date parseDate(String stringToParse) { 
     Date date = null; 
     try { 
      date = new SimpleDateFormat(DATE_FORMAT_PATTERN).parse(stringToParse); 
     } catch (ParseException e) { 
      Logger.logError(TAG, e); 
     } 
     return null; 
    } 

08-28 08:47:05.246: E/DateParser(4238): Exception: java.text.ParseException: Unparseable date: "2013-08-05T12:13:49.000Z" (at offset 23) 

risposta

40

provare a utilizzare

String DATE_FORMAT_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 

Il Z alla fine è di solito l'offset fuso orario. Se non ne hai bisogno, puoi lasciarlo cadere da entrambi i lati.

2

Il Z in la tua stringa di tempo non è un identificatore di fuso orario valido, ma il formato temporale specificato prevede un identificatore di fuso orario. Più specificamente, si aspetta un identificatore RFC 822 timezone, che di solito è lungo 4 cifre.

8

Uso X invece Z alla fine della stringa di formato:

yyyy-MM-dd'T'HH:mm:ss.SSSX 

per analizzare ISO-8601 offset formato di fuso orario.

(Funziona solo se si utilizza Java 7. Vedere this question).

Problemi correlati