2013-08-28 9 views
16

Kann mir jemand sagen, warum in der Welt habe ich diese Ausnahme?Datum nicht zutreffend: "2013-07-11T13: 41: 22.000Z" (bei Offset 23)

08-28 08: 47: 05,246: D/DateParser (4238): String empfangen für das Parsen ist 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) 

Antwort

40

try

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

Die Z am Ende mit in der Regel die Offset-Zeitzone. Wenn Sie es nicht brauchen, können Sie es vielleicht auf beiden Seiten fallen lassen.

2

Die Z in Ihr Zeitstring ist kein gültiger Zeitzonen-Bezeichner, aber das von Ihnen angegebene Zeitformat erwartet eine Zeitzonen-ID. Insbesondere erwartet es eine RFC 822 timezone Kennung, die normalerweise 4 Ziffern lang ist.

8

Verwenden X statt Z am Ende des Formatstrings:

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

zu analysieren ISO-8601-Format Zeitzone Offsets.

(Funktioniert nur, wenn Sie Java 7 verwenden. Siehe this question).

Verwandte Themen