2014-12-13 127 views
1

我有我奮鬥猜測很重要的問題,但我看不出這裏有什麼問題:解析日期例外 - 無法解析日期

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
String strDate = "2014-12-07T13:35:08.030Z"; 
try 
{ 
    return format.parse(strDate); 
} 
catch (ParseException e) 
{ 
    e.printStackTrace(); 
    Log.e("Problem with formatting date", strDate); 
} 

我得到java.text.ParseException:無法解析的日期:「2014 -12-07T13:35:08.030Z「(在偏移19處)

任何想法這裏還有什麼錯?

+0

'(「yyyy-MM-dd'T'HH:mm:ss.SSS'Z'」);'? – EpicPandaForce 2014-12-13 10:34:55

+0

http://stackoverflow.com/questions/8573250/android-how-can-i-convert-string-to-date只是看看這個鏈接它可能解決你的問題親愛的 – 2014-12-13 10:36:23

回答

1

根據看來Android的SimpleDateFormat的不支持Z-符號documentation(其不是字面的,而是UTC + 00:00的有效ISO標識符和同義詞)。

所以模式符號Z只理解偏移量,如-0800,但不是「Z」。僅僅使用apostrophs並不是一個充分的解決方法。如果您的輸入以「Z」結尾,則還需要將時區明確設置爲UTC GMT + 00:00。類似的東西(未測試):

String input = "2014-12-07T13:35:08.030Z"; 
SimpleDateFormat format; 

if (input.endsWith("Z")) { 
    format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
    format.setTimeZone(TimeZone.getTimeZone("GMT")); 
} else { 
    format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
} 

try { 
    return format.parse(input); 
} catch (ParseException e) { 
    e.printStackTrace(); 
    Log.e("Problem with formatting date", input); 
} 
1

你只是忘記(')中的SimpleDateFormat圍繞Z單引號:

'的Z',而不是ž