我很挣扎,我觉得琐碎的问题,但我没有看到任何错误:
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 :(得分:2)
根据documentation,似乎Android-SimpleDateFormat不支持Z符号(它不是文字但是有效的ISO标识符和UTC + 00:00的同义词)。
因此模式符号Z只能理解-0800之类的偏移,但不能理解“Z”。仅仅使用萎缩症并不是一个充分的解决方法。如果您的输入以“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 :(得分:1)
你只是忘记了(')在SimpleDateFormat中围绕Z的单引号:
'Z'代替Z