2014-12-13 95 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',而不是ž