Java日期获取实际偏移量
我想得到时区的实际偏移量 我的问题是:Java日期获取实际偏移量,java,date,Java,Date,我想得到时区的实际偏移量 我的问题是: TimeZone tz = TimeZone.getTimeZone("America/Toronto"); int test = tz.getRawOffset(); test = -18000000 -18000000/1000/3600 = -5 或者如果我去 我看到多伦多在UTC-4上 它写在文档中,该方法返回brut offset 但是我怎样才能得到真正的偏移量呢?getRawOffset没有考虑DST。它反映了标准时间。从文档中: 返
TimeZone tz = TimeZone.getTimeZone("America/Toronto");
int test = tz.getRawOffset();
test = -18000000
-18000000/1000/3600 = -5
或者如果我去
我看到多伦多在UTC-4上
它写在文档中,该方法返回brut offset
但是我怎样才能得到真正的偏移量呢?
getRawOffset
没有考虑DST。它反映了标准时间。从文档中:
返回要添加到UTC以获取此时区的标准时间的时间量(以毫秒为单位)由于该值不受夏令时的影响,因此称为原始偏移。
多伦多目前正在观测夏时制(直到11月4日),因此其当前UTC偏移为-4小时,但这是-5小时的“标准”和+1小时的DST
现在有一个不准确的假设:一个时区永远不会改变它的标准时间java.util.TimeZone
是一种相对古老且原始的表示形式;最好使用java.time.ZoneId
,以及java.time
包的其余部分
如果必须使用java.util.TimeZone
,请调用getOffset(long)
以获取特定时刻的UTC偏移量。不要使用getRawOffset
使用:
tz.getOffset(new Date().getTime())/1000/3600
另一个使用“多伦多夏令时”的搜索似乎表明他们确实适用夏令时,并且时钟在三月份设置为向前。。。值得研究的是,TimeZone
类早已过时,您特别使用的getTimeZone
方法可能会表现得非常令人惊讶。我建议您避免使用旧的日期时间类,而是学习使用。使用这些类比使用java.time类要好得多。