2014-03-27 70 views
0
SimpleDateFormat readDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
    String dtc = "2014-03-27T11:31:42.798Z"; 

      Date date = null; 
       try { 
        date = readDate.parse(dtc); 
       } catch (ParseException e) { 
        Log.d("myLog", "dateExcep " + e); 
       } 

嘗試{}趕上{}有例外:03-27 16:29:48.459:d/myLog(19388):dateExcep java.text.ParseException:不可解析日期:「2014-03-27T11 :31:42.798Z」(在偏移23)異常無法解析日期

回答

3

嘗試SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

代替

SimpleDateFormat readDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

當Z是時區。

4

您的格式模式中的Z是問題所在。這代表了一個RFC 822時區,它不能僅僅是Z。如果你的輸入將始終是UTC,你可以使用:

// The Z is now quoted as a literal. 
SimpleDateFormat readDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
readDate.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); 

注意,它在這裏設置時區,否則它會假設值是在當前系統的時區是很重要的。

"normal" Java 7中,您可以使用X代替ISO-8601時區偏移說明符,但Android SimpleDateTime不支持該功能。