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()
。
我想获取系统的当前 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()
。