Java日期获取实际偏移

时间:2018-10-22 15:23:20

标签: java date

我想获取一个时区的真实偏移量。

我的问题:

 TimeZone tz = TimeZone.getTimeZone("America/Toronto");
int test = tz.getRawOffset();

test = -18000000

-18000000/1000/3600 = -5 

或者如果我去https://www.google.fr/search?q=horaire+toronto&oq=horaire+toro&aqs=chrome.1.69i57j0l5.3311j0j7&sourceid=chrome&ie=UTF-8

我看到多伦多在UTC-4上。

它写在文档上,该方法返回brut偏移量。

但是我如何获得真实的偏移量?

2 个答案:

答案 0 :(得分:3)

getRawOffset不考虑DST。它反映了标准时间。从文档中:

  

以毫秒为单位返回添加到UTC以获得在该时区中的标准时间的时间。 由于此值不受夏时制的影响,因此称为原始偏移。

多伦多目前正在遵守夏令时(直到11月4日),因此其当前的UTC偏移为-4小时,但这是-5小时(标准)和+1小时DST。

现在那里有一个不正确的假设:时区永远不会更改其标准时间。 java.util.TimeZone是一个相对古老的原始表示形式;最好改用java.time.ZoneId和其他java.time软件包。

如果必须使用java.util.TimeZone,然后调用getOffset(long)以获取特定时间点的UTC偏移量。

答案 1 :(得分:0)

不要使用getRawOffset

使用:tz.getOffset(new Date().getTime()) / 1000 / 3600