尝试String to Date解析时出现Java ParseException

hoo*_*d82 3 java android simpledateformat parseexception

我很难解析/格式化从Web服务收到的日期字符串.我试过多种方法,但没有运气.

示例日期字符串:

2011-10-05T03:00:00Z
Run Code Online (Sandbox Code Playgroud)

例外:

W/System.err(10072): java.text.ParseException: Unparseable date: "2011-10-05T05:00:00Z" (at offset 10)
W/System.err(10072):    at java.text.DateFormat.parse(DateFormat.java:626)
Run Code Online (Sandbox Code Playgroud)

示例代码:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:SSSS");
Date date = formatter.parse(info.AiringTime);
Run Code Online (Sandbox Code Playgroud)

我发现如果我删除日期和时间之间的"T"并用空格替换它,它将格式化正常.有人有什么建议吗?

--UPDATE--

在深入研究API文档之后,我发现了这个:

所有响应DateTime值均为UTC格式.您需要应用UTC偏移量来计算显示的本地时间.

DateTime是以下列格式之一指定的日期和时间值:

UTC格式:YYYY-MM-DDThh:mm:ssZ.例如:2011-03-15T02:00:00Z.

偏移的当地时间:YYYY-MM-DDThh:mm:ss +或 - hh:mm(正偏移或负偏移).例如,美国太平洋时间:2011-03-14T06:00:00-08:00.

有关UTC格式方法的任何建议吗?

Rob*_*Rob 11

你可以尝试:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String dateString = dateString.replace("Z", "GMT+00:00");
Date date = dateFormat.parse(dateString);
Run Code Online (Sandbox Code Playgroud)

上面的代码应该正确处理在日期中指定时区的情况.由于Z表示UTC/GMT时区,因此它被GMT取代,因此SimpleDateFormat可以正确解释它(如果有人知道的话,我很想知道处理这个位的更简洁方法).