如何在Java中获取时区的UTC偏移量?

3

如果给定一个时区(America/New_York),我该如何获取UTC偏移量?

我尝试使用java.util.TimeZone,但没有成功。如果使用Joda Time可以解决问题的话,我也可以接受。


时区应该可以正常工作,请将您尝试过的代码添加到问题中,并包括任何异常、输出等。 - blm
2个回答

9

由于夏令时等原因,特定时区的偏移量可能会根据当前时间而变化。UTC没有夏令时,但是“America/New_York”在夏令时切换时会更改偏移量。因此,偏移量是当前时间和时区的函数。以下答案提供了获取当前偏移量的一些示例:

Java TimeZone offset


3
注意:当前的偏移量取决于以下因素:
  • 原始时区偏移量
  • 当前时刻的夏令时(DST)。
这在接近的答案中很好地描述了。
有用的片段:
  • TimeZone.getTimeZone("Europe/Kiev").getOffset(Instant.now().toEpochMilli()); 将为您提供以毫秒为单位的整数偏移量
  • String.format("%tz", Instant.now().atZone(ZoneId.of("Europe/Kiev"))); 将为您提供一个标准化的字符串表示,例如"+0300"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接