2013-02-27 89 views
1

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

我在一个时区遇到与我的数据库类似的问题,服务器在另一个。

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

现在在洛杉矶的时间和你住的地方一样吗?格林威治是否一样?来自wiki *“时区是地球上具有统一标准时间的地区......陆地上的大多数时区都与协调世界时(UTC)相差了整整数小时(UTC-12到UTC + 14),但有一些偏移了30或45分钟,一些较高纬度的国家在一年中的一部分时间使用夏令时,通常是通过改变时钟一小时。*“ – MadProgrammer 2013-02-27 05:35:16

+0

嗨,感谢您的时间,但请不要说我我将相同的时间设置为日历实例,甚至在设置日历实例的正常时间之后,它们将返回不同的值,那就是我的困惑 – Ajay 2013-02-27 05:36:45

+0

是的,但是您在两个不同的时区设置“相同时间”这就是每个人都在做的事情。格林威治标准时间上午10点!= PST上午10点。 – Ben 2013-07-19 09:40:34

回答

2

当你在约会过,它的UTC时间戳拍摄(以便毫秒数,因为在GMT + 0 01-01-1970),你再设置两个日历到同一个时间,并询问什么时候它是。

明显的是,不同时区的时区会有所不同--LA时区和运行代码的计算机的时区,即使它们已经使用完全相同的UTC时间进行了初始化。

相关问题