尝试从字符串到日期的解析时发生Java ParseException

我很难解析/格式化从Web服务接收回的Date字符串.我尝试了多种方法,但是没有运气.

样本日期字符串:

2011-10-05T03:00:00Z

例外:

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)

样例代码:

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

我发现,如果删除日期和时间之间的“ 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格式的方法有什么建议吗?

解决方法:

您可以尝试:

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

上面的代码应正确处理在日期中指定时区的情况.因为Z代表UTC / GMT时区,所以它已被GMT取代,因此SimpleDateFormat可以正确地解释它(如果有人知道,我想知道一种更简洁的方式来处理此位).

上一篇:java.lang.IllegalArgumentException:解析错误-日期格式错误?


下一篇:Java中的解析日期字符串