1

嗨,在下面的代码中,我得到的输出为 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));
4

1 回答 1

2

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

显然,不同时区的小时会有所不同——洛杉矶时区和运行代码的计算机的时区,即使它们已使用完全相同的 UTC 时间进行初始化。

于 2013-02-27T05:36:53.027 回答