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
中不受支持。现在。
关于java - 异常不可解析的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22688378/