2017-02-26 9 views
4

私は現在私のシステムのZoneOffsetを取得したいと思います。
私はそれを試みたが、私は道を見つけることができなかった。
また、私は解決策を探していましたが、何も見つかりませんでした。
これはJavaで可能ですか?

Java 8 ZoneOffset - 現在のシステムUTCオフセットを取得する方法

EDIT:
私の質問はthisに異なっています。私は、現在のシステムUTCを知りたいと思います.TimeZoneオフセット表現とTimeZoneの間の変換方法ではありません。

+2

[Java TimeZone offset](http://stackoverflow.com/questions/11399491/java-timezone-offset)の可能な複製 –

答えて

7

はい、それは可能です:

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

か、LocalDateTimeをインスタンスとインスタントインスタンスを置き換えることができます。

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

これら2つのオプションには大きな違いがあります。 'Instant'バージョンは常に正しい答えを与えます。 'LocalDateTime'バージョンは、[" best available offset "](https://docs.oracle.com/javase/8/docs/api/java/time/zone/ZoneRules.html#getOffset-java.time)を与えます。 LocalDateTime-)。これは、DSTのために、 'LocalDateTime'に対して2つの有効なオフセットが存在するか、または存在しない場合があります。 – JodaStephen

7

あなたの要求は2つの部分があります

  • 私」のオフセットをシステム " - システムタイムゾーンが必要 - ZoneId.systemDefault()
  • オフセット "現在" - これらは、以下を得るために、ZoneRulesを使用して相互に接続されているInstant.now()

- ので、あなたは現在の瞬間を必要とする:simplictyについては

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

、あなたが望むかもしれませんOffsetDateTimeを使用します

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

この作品ので、はZoneId.systemDefault()Instant.now()の両方を内部的に使用します。

関連する問題