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
我在线编译你的程序
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
看下这篇文章写得不错,
http://blog.csdn.net/wangpeng047/article/details/8560690
打印出来的时间没错,转换为UTC(GMT)时间确实是你传给Calendar的时间。
calendar.setTimeZone指定了Calendar以什么时区解析你设置的时间,而toString打印了CST时区,是因为系统默认时区就是CST的,Date.toString会以系统时区的形式展示。
使用下面代码设置时区就会打印对对应时区的时间:
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));