如何获取 Java 中时区的 UTC 偏移量?
How do I get the UTC offset for a timezone in Java?
给定一个时区 (America/New_York
),我该如何获取 UTC 偏移量?
我曾尝试使用 java.util.TimeZone
但没有成功。如果解决方案可行,我也可以使用 Joda Time。
由于夏令时等原因,特定时区的偏移量可能会根据当前时间而变化。UTC 没有夏令时,但 "America/New_York" 会通过夏令时开关更改偏移量。因此,偏移量是 当前时间和时区的函数。这里的答案给出了一些如何获取当前偏移量的例子:
Java TimeZone offset
注意:当前偏移量取决于
- 原始 tz 偏移量
- 当前时刻的夏令时 (DST)。
这在附近的答案中有很好的描述。
有用的片段:
TimeZone.getTimeZone("Europe/Kiev").getOffset(Instant.now().toEpochMilli());
将为您提供以毫秒为单位的整数偏移量
String.format("%tz", Instant.now().atZone(ZoneId.of("Europe/Kiev")));
将为您提供标准化的字符串表示形式,例如“+0300”
给定一个时区 (America/New_York
),我该如何获取 UTC 偏移量?
我曾尝试使用 java.util.TimeZone
但没有成功。如果解决方案可行,我也可以使用 Joda Time。
由于夏令时等原因,特定时区的偏移量可能会根据当前时间而变化。UTC 没有夏令时,但 "America/New_York" 会通过夏令时开关更改偏移量。因此,偏移量是 当前时间和时区的函数。这里的答案给出了一些如何获取当前偏移量的例子:
Java TimeZone offset
注意:当前偏移量取决于
- 原始 tz 偏移量
- 当前时刻的夏令时 (DST)。
这在附近的答案中有很好的描述。
有用的片段:
TimeZone.getTimeZone("Europe/Kiev").getOffset(Instant.now().toEpochMilli());
将为您提供以毫秒为单位的整数偏移量String.format("%tz", Instant.now().atZone(ZoneId.of("Europe/Kiev")));
将为您提供标准化的字符串表示形式,例如“+0300”