我正在嘗試獲取紐約(美國/東部)和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小時 –