SimpleDateFormat解析丢失时区信息

12 浏览
0 Comments

SimpleDateFormat解析丢失时区信息

代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println(new Date());
    try {
        String d = sdf.format(new Date());
        System.out.println(d);
        System.out.println(sdf.parse(d));
    } catch (Exception e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }

输出结果:

Thu Aug 08 17:26:32 GMT+08:00 2013
2013.08.08 09:26:32 GMT
Thu Aug 08 17:26:32 GMT+08:00 2013

注意,format()方法正确地将Date格式化为GMT,但parse()方法丢失了GMT的细节。我知道我可以使用substring()来解决这个问题,但是这个现象背后的原因是什么?

这里有一个相同的问题,但没有任何答案。

编辑:让我用另一种方式表达问题,有什么方法可以获取一个始终为GMT的Date对象?

0