【发布时间】:2015-04-25 14:18:27
【问题描述】:
我有一个非常简单的Java程序如下:
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
System.out.println(new Date(cal.getTimeInMillis()));
System.out.println(cal.get(Calendar.ZONE_OFFSET));
cal.set(Calendar.ZONE_OFFSET, 0);
System.out.println(new Date(cal.getTimeInMillis()));
}
我的家乡时区是格林威治标准时间。出于实验的目的,我将计算机的时区设置为 EDT,并观察到系统时钟已向后移动 5 小时。
当我运行程序时,我得到这个输出:
Sat Apr 25 10:09:23 EDT 2015
-18000000
Sat Apr 25 05:09:23 EDT 2015
Sat Apr 25 10:09:23 EDT 2015 表示系统时间和时区,正如预期的那样。
-18000000 表示区域偏移量,单位为毫秒,如预期的那样为负 5 小时。
当我将区域偏移设置为 0 时,我希望时间读取我的实际本地时间 15:09,但它读取的是 05:09,换句话说,它已经花费了另外 5 个小时而不是添加它们.
为什么?我很困惑!
【问题讨论】:
标签: java date timezone timezone-offset