解析日期异常 - 无法解析的日期

时间:2014-12-13 10:29:27

标签: android date simpledateformat

我很挣扎,我觉得琐碎的问题,但我没有看到任何错误:

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处)

知道这里还有什么问题吗?

2 个答案:

答案 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