web-dev-qa-db-ja.com

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

システムの現在のZoneOffsetを取得したい。
それを試みましたが、方法が見つかりませんでした。
また、解決策を探していましたが、見つかりませんでした。
Javaでそれを行うことは可能ですか?

編集:
私の質問は this とは異なります。 TimeZoneオフセット表現とTimeZone格納の間の変換方法ではなく、現在のシステムUTCを知りたいのですが。

12
Allison Burgers

はい、可能です:

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

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

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

リクエストには2つの部分があります。

  • 「私のシステム」のオフセット-したがって、システムのタイムゾーンが必要です-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()の両方を内部で使用するため機能します。

19
JodaStephen