【发布时间】:2013-02-12 20:00:35
【问题描述】:
嗨,在下面的代码中,我得到的输出是 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));
【问题讨论】:
-
现在洛杉矶的时间和你住的地方一样吗?格林威治也一样吗?来自 wiki “时区是地球上具有统一标准时间的区域......陆地上的大多数时区与协调世界时 (UTC) 有一个整数小时 (UTC-12 到UTC+14),但有一些偏移了 30 或 45 分钟。一些高纬度国家在一年中的部分时间使用夏令时,通常将时钟更改一个小时。"
-
您好,感谢您的宝贵时间,但请不要说我为日历实例设置了相同的时间,即使在为日历实例设置了正常的时间之后,它们返回的值也不同,这就是我的困惑是
-
是的,但是您在两个不同的时区设置“相同时间”,这就是每个人都在做的事情。格林威治标准时间上午 10 点!= 太平洋标准时间上午 10 点。
标签: java date calendar timezone