不同时区的Java日历为同一时间提供不同的值

时间:2013-02-27 05:30:52

标签: java date calendar timezone

嗨,在下面的代码中,我得到输出为9和10,为什么会发生这种情况?即使日历属于不同的时区,我们也会通过相同的日期来设置时间。据我所知,时间是从时期计算出来的一个相对值,所以这个相对值应该是相同的,无论时区是什么

我在一个时区遇到类似的问题,在另一个时区遇到类似的问题。

Date date = new Date ();
    Calendar c = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"),Locale.US);
    Calendar c1 = Calendar.getInstance();
    c.setTime(date);
    c1.setTime(date);
    System.out.println(c.get(Calendar.HOUR));
    System.out.println(c1.get(Calendar.HOUR));

1 个答案:

答案 0 :(得分:2)

当您传入日期时,将采用其UTC时间戳(因此GMT + 0中自01-01-1970以来的毫秒数),然后将两个日历设置为同一时间,并询问它的小时数。 / p>

显然,不同时区的小时数将会有所不同 - 即使用完全相同的UTC时间初始化了L.A时区和运行代码的计算机的时区。