我正在尝试获取纽约(美国/东部)和UTC之间的当前偏移量。无论我的服务器在什么时区以及其他任何地方,我怎样才能得到这个值。我只想要以毫秒为单位的偏移量。我确信有一个快速的方法来做到这一点,但我没有找到它。java找到纽约和UTC之间的偏移量
预先感谢您!
我正在尝试获取纽约(美国/东部)和UTC之间的当前偏移量。无论我的服务器在什么时区以及其他任何地方,我怎样才能得到这个值。我只想要以毫秒为单位的偏移量。我确信有一个快速的方法来做到这一点,但我没有找到它。java找到纽约和UTC之间的偏移量
预先感谢您!
注意:这未经测试。
使用:
//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);
是的,谢谢,我相信这是我所需要的 – Marianna
使用的getOffset()获取偏移功能一个时区和GMT的,然后其他与GMT,然后减去他们,你准备好了。但要小心,有人提到这取决于当前日期!这不是微不足道的,因为每一天,几个小时,两个时区是在不同的日期!如果两个时区例如处于不同的DST区域中几个小时(例如DST更改时间),这可能会导致显示不正确
我们可以得到它:
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());
OP询问当前偏移量。这会得到原始偏移量。对于一年中部分时间使用夏令时的地点,这是不正确的。 –
您需要添加est.getRawOffset()+ est.getDSTSavings()以考虑夏令时 – dirkoneill
可以使用getRawOffset()函数来得到任意两个时区之间的偏差...... 但你必须明白一两件事,偏移量将UTC与给定的时区之间的差异.. 考虑你的服务器是在加拿大,则偏移必须由加拿大和用户之间的时区的时区差来确定..
int offset = TimeZone.getTimeZone ('Asia/calcutta').getRawOffset() - TimeZone.getDefault().getRawOffset();
这里的“TimeZone.getDefault()”是服务器的时区即)加拿大......所以需要扣除它以获得所需的偏移量。
我试了@Geoff Montee的回答,但它对我没有帮助。这是结束了工作了:
public static long getOffsetFromUTCInMilliseconds(TimeZone timezone) {
long offset = timezone.getOffset(DateTimeHelper.nowUTC().toEpochSecond(ZoneOffset.UTC)) + timezone.getDSTSavings();
return offset;
}
方便的是,答案,如果时区比UTC(GMT-1,GMT-2等)返回了否定的答案,如果时区是返回一个肯定的答复在UTC(GMT + 1,GMT + 2等)之前。
美国/东部和UTC之间的偏移量不取决于你的服务器在什么时区,它取决于日期等等。 –
http://www.timeanddate.com/worldclock/city.html?n=179 - 它是-4或-5小时 –