2 qq 25148033 qq_25148033 于 2016.02.02 00:33 提问

Java Calendar中的getTime()方法

Calendar calendar=Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
calendar.clear();
calendar.set(1970, 0, 1,0,0,0);
System.out.println(calendar.getTime());
为什么输出结果是Thu Jan 01 08:00:00 CST 1970
而不是Thu Jan 01 00:00:00 CST 1970

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.02 00:51

我在线编译你的程序
http://ideone.com/uXfvOb
结果是
Thu Jan 01 00:00:00 GMT 1970

Thu Jan 01 08:00:00 CST 1970
说明你的时区没有设置成GMT,还是China Standard Time(CST)

无论如何都不会是Thu Jan 01 00:00:00 CST 1970

Yiran8935
Yiran8935   2016.02.02 10:22
fanst_
fanst_   2016.02.03 20:54

打印出来的时间没错,转换为UTC(GMT)时间确实是你传给Calendar的时间。
calendar.setTimeZone指定了Calendar以什么时区解析你设置的时间,而toString打印了CST时区,是因为系统默认时区就是CST的,Date.toString会以系统时区的形式展示。
使用下面代码设置时区就会打印对对应时区的时间:
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));

http://blog.csdn.net/fanst_/article/details/50627744

Csdn user default icon
上传中...
上传图片
插入图片