0
我正在尝试写入一些字符串,其格式为UTC时间,并将其格式化为从手机抓取的本地时区。然而,尽管看着SimpleDateFormat documentation,我整个错误运行我的样本字符串是不可解析:当通过SimpleDateFormat解析UTC字符串到日期时解析日期错误
W/System.err﹕ java.text.ParseException: Unparseable date: "2014-07-16T21:00:00:000+0000" (at offset 19)
W/System.err﹕ at java.text.DateFormat.parse(DateFormat.java:555)
[...]
D/Set time:﹕ Wed Jul 16 15:10:03 PDT 2014
D/TimeInMilli:﹕ 1405548603565
代码:
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone(); //Get phone's PST zone
String UTCinput = "2014-07-16T21:00:00:000+0000"; //2:00PM PST
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
format.setTimeZone(tz);
Date dateCal = new Date();
try {
dateCal = format.parse(UTCinput);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cal.setTime(dateCal);
Log.d("Set time: ", String.valueOf(dateCal));
Log.d("TimeInMilli: ", String.valueOf(cal.getTimeInMillis()));
什么是我解析的方式的问题?
当运行到这种神秘,复制粘贴示例代码。 StackOverflow.com包含您在发布之前可能尝试的SimpleDateFormat代码示例。 –
提示:使用[Joda-Time](http://www.joda.org/joda-time/)或[java.time](http://docs.oracle.com/javase/8/docs/api /java/time/package-summary.html)库而不是java.util.Date&SimpleDateFormat,这是非常麻烦的。您可以直接传递[ISO 8601](http://en.wikipedia.org/wiki/ISO_8601)兼容字符串,而无需格式化/转换。 'DateTime dateTime = new DateTime(“2014-07-16T21:00:00:000 + 0000”);' –