Java 异常不可解析日期
try{}catch{}have exception:03-27 16:29:48.459:D/myLog(19388):dateExcep java.text.ParseException:Unparseable date:“2014-03-27T11:31:42.798Z”(在偏移量23处)tryJava 异常不可解析日期,java,android,Java,Android,try{}catch{}have exception:03-27 16:29:48.459:D/myLog(19388):dateExcep java.text.ParseException:Unparseable date:“2014-03-27T11:31:42.798Z”(在偏移量23处)trySimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd'HH:MM:ss.SSS'Z”) 而不是 SimpleDateFormat readDat
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd'HH:MM:ss.SSS'Z”)代码>
而不是
SimpleDateFormat readDate=新的SimpleDateFormat(“yyyy-MM-dd'T'HH:MM:ss.SSSZ”)代码>
其中Z是时区。格式模式中的Z
是问题所在。这表示RFC 822时区,它不能只是Z
。如果您的输入始终以UTC为单位,则可以使用:
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);
}
请注意,在此处设置时区非常重要,否则它将假定该值位于当前系统时区中
在中,您可以使用X
来表示ISO-8601时区偏移说明符,但现在不支持该说明符。offset 23与日期字符串末尾的Z
相关Z
用于将时区指定为。检查时区的参考
// 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"));