Java 8 ZoneOffset - 如何获取当前系统的 UTC 偏移量

Java 8 ZoneOffset - How to get current system UTC offset

我想获取系统的当前 ZoneOffset
我尝试这样做,但找不到方法。
另外,我一直在寻找解决方案,但没有找到。
在 Java 中可以这样做吗?

编辑:
我的问题与 this 不同。我想知道当前系统的 UTC,而不是如何在时区偏移表示或时区存储之间进行转换。

是的,有可能:

ZoneOffset.systemDefault().getRules().getOffset(Instant.now())

或者您可以将 Instant 实例替换为 LocalDateTime 实例:

ZoneOffset.systemDefault().getRules().getOffset(LocalDateTime.now())

您的请求分为两部分:

  • "my system" 的偏移量 - 因此您需要系统时区 - ZoneId.systemDefault()
  • "current" 偏移量 - 因此您需要当前时刻 - Instant.now()

这些使用 ZoneRules 捆绑在一起,得到以下内容:

ZoneOffset o = ZoneId.systemDefault().getRules().getOffset(Instant.now());

为简单起见,您可能需要使用 OffsetDateTime:

ZoneOffset o = OffsetDateTime.now().getOffset();

之所以可行,是因为 OffsetDateTime.now() 在内部同时使用了 ZoneId.systemDefault()Instant.now()