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

时间:2017-02-26 12:51:52

标签: java time java-8 utc java-time

我想获得系统的当前 ZoneOffset 我试图这样做,但我找不到办法 此外,我正在寻找解决方案,但我没有找到任何解决方案 是否有可能在Java中这样做?

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

2 个答案:

答案 0 :(得分:18)

您的请求包含两部分:

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

使用ZoneRules捆绑在一起,以获取以下内容:

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

对于简单,您可能想要使用OffsetDateTime

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

这是有效的,因为OffsetDateTime.now()在内部同时使用ZoneId.systemDefault()Instant.now()

答案 1 :(得分:14)

是的,有可能:

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

或者您可以使用LocalDateTime实例替换Instant实例:

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