【发布时间】:2018-05-30 06:06:53
【问题描述】:
考虑以下代码 sn-ps。
TimeZone tz = TimeZone.getTimeZone("GMT");
System.out.println(tz);
Calendar cal = Calendar.getInstance();
cal.set(2017, Calendar.DECEMBER, 25);
System.out.println("before setting time zone: " + cal.getTime());
cal.setTimeZone(tz);
System.out.println("after setting time zone: " + cal.getTime());
结果如下:
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
before setting time zone: Mon Dec 25 22:39:53 EST 2017
after setting time zone: Mon Dec 25 22:39:53 EST 2017
时区更改后,为什么打印输出的日期仍然显示 EST?不应该是格林威治标准时间吗?
【问题讨论】:
-
您将区域设置为
cal而不是cal.getTime()。后者只是java.util.Date类型,您无法设置区域(其方法java.util.Date.toString()仅使用系统 tz)。 -
意识到
cal.getTime()给你一个java.util.Date这个著名的博客条目可能会有所帮助:All about java.util.Date。
标签: java date datetime calendar timezone