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);
}
try {} catch {}有异常:03-27 16:29:48.459:D / myLog(19388):dateExcep java.text.ParseException:无法解析的日期:“ 2014-03-27T11:31:42.798Z”(偏移量23)
最佳答案
格式模式中的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
目前不支持。