我想獲取當前的ZoneOffset我的系統。
我試圖做到這一點,但我找不到方法。
此外,我正在尋找一個解決方案,但我沒有找到任何。
在Java中可以這樣做嗎?
Java 8 ZoneOffset - 如何獲得當前系統的UTC偏移量
編輯:
我的問題是this不同。我想知道UTC的當前系統,而不是如何在TimeZone偏移表示或TimeZone存儲之間進行轉換。
我想獲取當前的ZoneOffset我的系統。
我試圖做到這一點,但我找不到方法。
此外,我正在尋找一個解決方案,但我沒有找到任何。
在Java中可以這樣做嗎?
Java 8 ZoneOffset - 如何獲得當前系統的UTC偏移量
編輯:
我的問題是this不同。我想知道UTC的當前系統,而不是如何在TimeZone偏移表示或TimeZone存儲之間進行轉換。
是的,這是可能的:
ZoneOffset.systemDefault().getRules().getOffset(Instant.now())
,或者你可以用LocalDateTime實例來替換即時實例:
ZoneOffset.systemDefault().getRules().getOffset(LocalDateTime.now())
這兩個選項之間有一個關鍵區別。 「即時」版本將始終提供正確的答案。 LocalDateTime版本會給出[「最佳可用偏移量」](https://docs.oracle.com/javase/8/docs/api/java/time/zone/ZoneRules.html#getOffset-java.time。 LocalDateTime-)。這是因爲DST,LocalDateTime可能有兩個有效的偏移量,或者沒有。 – JodaStephen
你的要求有兩個部分:
ZoneId.systemDefault()
Instant.now()
這些被捆綁在一起使用ZoneRules
,得到如下:
ZoneOffset o = ZoneId.systemDefault().getRules().getOffset(Instant.now());
對於simplicty,您可能希望使用OffsetDateTime
:
ZoneOffset o = OffsetDateTime.now().getOffset();
這工作,因爲OffsetDateTime.now()
內部使用ZoneId.systemDefault()
和Instant.now()
。
[Java TimeZone偏移]的可能重複(http://stackoverflow.com/questions/11399491/java-timezone-offset) –