我想获得纽约(美国/东部)和UTC之间的当前偏差。无论我的服务器在哪个时区,以及其他任何内容,我如何获得此值。我只想要以毫秒为单位的偏移量。我确信有一种快速的方法可以做到这一点,但我还没有找到它。
提前谢谢!
答案 0 :(得分:5)
注意:这未经过测试。
使用:
//Get NY time zone instance
TimeZone ny_tz = TimeZone.getTimeZone("America/New_York");
//Get NY calendar object with current date/time
Calendar ny_cal = Calendar.getInstance(ny_tz);
//Get offset from UTC, accounting for DST
int ny_offset_ms = ny_cal.get(Calendar.ZONE_OFFSET) + ny_cal.get(Calendar.DST_OFFSET);
答案 1 :(得分:2)
我们可以这样做:
FOR EST:
TimeZone est = TimeZone.getTimeZone("America/New_York");
System.out.println("Offset ="+est.getRawOffset());
对于PST:
TimeZone pst = TimeZone.getTimeZone("America/Los_Angeles");
System.out.println("Offset ="+pst.getRawOffset());
答案 2 :(得分:0)
使用getOffset()函数获取一个时区和GMT的偏移量,然后使用另一个和GMT,然后减去它们,然后就可以了。但要小心,有人确实提到这取决于当前的日期!这不是微不足道的,因为每天,几个小时,两个时区都处于不同的日期!这可能很重要,如果两个时区例如在几个小时的不同DST区域(例如DST更改时间),这可能会导致显示不正确
答案 3 :(得分:0)
您可以使用getRawOffset()函数获取任意两个时区之间的偏移量... 但是你必须理解一点,即偏移量是UTC和给定时区之间的差异。 考虑您的服务器位于加拿大,那么偏移量必须由加拿大和用户时区之间的时区差异决定。
int offset = TimeZone.getTimeZone ('Asia/calcutta').getRawOffset() - TimeZone.getDefault().getRawOffset();
这里'TimeZone.getDefault()'是服务器的时区,即加拿大...所以需要减去它以获得所需的偏移量。