通过 SimpleDateFormat 将 UTC 字符串解析为 Date 时出现无法解析的日期错误

Kur*_*ner 1 java parsing android date simpledateformat

我正在尝试编写一些内容,该内容将采用以下格式的 UTC 时间字符串,并将其格式化为从手机获取的本地时区。然而,尽管查看SimpleDateFormat 文档,我还是遇到了我的示例字符串无法解析的错误:

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
Run Code Online (Sandbox Code Playgroud)

代码:

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()));
Run Code Online (Sandbox Code Playgroud)

我解析的方式有什么问题?

Rei*_*eus 6

您的输入String需要与您的DateFormat模式相匹配

String UTCinput = "2014-07-16T21:00:00.000+0000"; //2:00PM PST
                                      ^--- was ":"
Run Code Online (Sandbox Code Playgroud)