2016-09-09 2 views
0

Die folgende Ausnahme wird beim Parsen der UTC-Datumszeit auf EST-Ortszeit ausgelöst.Nicht in der Lage, die UTC-Datumszeit auf die lokale EST-Zeit zu analysieren

Ausnahme:

Stacktrace:] with root cause 
java.text.ParseException: Unparseable date: "2016-09-09T03:00:29Z" 
    at java.text.DateFormat.parse(DateFormat.java:357) 
    at com.study.crud.util.GenericUtils.convertUTCDateToEST(GenericUtils.java:55) 

GenericUtils.java

public static String convertUTCDateToEST(String utcDate) throws ParseException { 
     SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US); 
     inFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
     Date aDate = inFormat.parse(utcDate); 

     DateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd HH:MI:SS"); 
     outFormat.setTimeZone(TimeZone.getTimeZone("EST")); 
     String estDate = outFormat.format(aDate); 

     return estDate; 
    } 

eine ähnliche Sachen Gefunden auf SO hier java.text.ParseException: Unparseable date "yyyy-MM-dd'T'HH:mm:ss.SSSZ" - SimpleDateFormat und versucht, Lösungen vorgeschlagen, aber hat nicht funktioniert.

+0

Verwenden Sie 'mm: ss', nicht' MI: SS' in Ihrem Ausgabeformat. –

+0

Verweise auf diese [http://stackoverflow.com/questions/19375357/java-convert-gmt-utc-to-local-time-doesnt-work-as-expected][1] – zpc

Antwort

1

Im Eingabeformat ist ein Fehler aufgetreten. Sie haben Millisekunden als Eingabe für Ihr Format .SSS und dann für die Zone Z angegeben.

Sie haben jedoch die Millisekunde-Option nicht bestanden. Das folgende Format funktioniert

SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
0

Es liegt daran, dass der millisecond Teil der Zeit aus Ihrer Eingabe nicht vorhanden ist:

"2016-09-09T03:00:29Z" 
        ^unmatched place 

Sie entweder die Eingabe, indem Sie den fehlenden Teil revidieren können (2016-09-09T03:00:29.000Z) oder Ihr Format Muster entsprechend (yyyy-MM-dd'T'HH:mm:ss'Z') ändern .

Außerdem gibt es einen Tippfehler in der Ausgabe-Format (der winzige Teil der Zeit):

"yyyy-MM-dd HH: MI: SS"

Es soll ersetzt werden mit yyyy-MM-dd HH:mm:ss.

Verwandte Themen