我很难解析/格式化从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可以正确地解释它(如果有人知道,我想知道一种更简洁的方式来处理此位).