Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java日期获取实际偏移量_Java_Date - Fatal编程技术网

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类要好得多。