java查找NY和UTC之间的偏移量

时间:2012-10-09 20:31:45

标签: java time timezone

我想获得纽约(美国/东部)和UTC之间的当前偏差。无论我的服务器在哪个时区,以及其他任何内容,我如何获得此值。我只想要以毫秒为单位的偏移量。我确信有一种快速的方法可以做到这一点,但我还没有找到它。

提前谢谢!

4 个答案:

答案 0 :(得分:5)

注意:这未经过测试。

使用:

Calendar class

TimeZone class

//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)

Java API TimeZone

使用getOffset()函数获取一个时区和GMT的偏移量,然后使用另一个和GMT,然后减去它们,然后就可以了。但要小心,有人确实提到这取决于当前的日期!这不是微不足道的,因为每天,几个小时,两个时区都处于不同的日期!这可能很重要,如果两个时区例如在几个小时的不同DST区域(例如DST更改时间),这可能会导致显示不正确

答案 3 :(得分:0)

您可以使用getRawOffset()函数获取任意两个时区之间的偏移量... 但是你必须理解一点,即偏移量是UTC和给定时区之间的差异。 考虑您的服务器位于加拿大,那么偏移量必须由加拿大和用户时区之间的时区差异决定。

    int offset = TimeZone.getTimeZone ('Asia/calcutta').getRawOffset() - TimeZone.getDefault().getRawOffset();

这里'TimeZone.getDefault()'是服务器的时区,即加拿大...所以需要减去它以获得所需的偏移量。