Android SimpleDateFormat'z'格式错误

时间:2014-03-20 03:37:26

标签: android simpledateformat

我使用下面的代码,得到不同的结果!那我怎么解决呢?

在2.3.5系统中

,将获得 星期四,2014年3月20日03:11:56 GMT + 00:00

在4.x系统中

,将获得 星期四,2014年3月20日03:13:28 GMT

private static final String RFC822_DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss z";

private static DateFormat getRfc822DateFormat() {
SimpleDateFormat rfc822DateFormat = new SimpleDateFormat(RFC822_DATE_FORMAT, Locale.US);

rfc822DateFormat.setTimeZone(new SimpleTimeZone(0, "GMT"));

return rfc822DateFormat;
}

我这样解决了,但为什么会这样?

 public static String formatRfc822Date(Date date)
 {
String format = getRfc822DateFormat().format(date);
//fix with android 2.3.5 Thu, 20 Mar 2014 03:11:56 GMT+00:00   
if(!format.endsWith("GMT")){
    format = format.substring(0, format.lastIndexOf("+"));  
}
return format;
}

1 个答案:

答案 0 :(得分:0)

获取TimeZone,如下所示......

TimeZone.getTimeZone("GMT+0000")

而不是如下......

new SimpleTimeZone(0, "GMT")

现在,通过TimeZone.getTimeZone("GMT+0000")方法将setTimeZone()作为参数传递,如下所示......

rfc822DateFormat.setTimeZone(TimeZone.getTimeZone("GMT+0000"));