モジュール java.base
パッケージ java.time.zone

クラスZoneRules

java.lang.Object
java.time.zone.ZoneRules
すべての実装されたインタフェース:
Serializable

public final class ZoneRules extends Object implements Serializable
単一タイムゾーンのゾーンオフセットがどのように変化するかを定義するルール。

このルールはタイムゾーンの履歴および将来のすべての遷移をモデル化します。 ZoneOffsetTransitionは既知の遷移(通常は履歴)に使用されます。 ZoneOffsetTransitionRuleは、アルゴリズムの結果に基づく将来の遷移に使用されます。

ルールはZoneIdを使用してZoneRulesProvider経由でロードされます。 同じルールが複数のゾーンID間で内部的に共有されることがあります。

ZoneRulesのインスタンスを直列化すると、ルール・セット全体が格納されます。 ゾーンIDは、このオブジェクトの状態の一部ではないため格納されません。

ルール実装は、履歴および将来の遷移について完全な情報を格納する場合としない場合があります。格納される情報はルール・プロバイダによって実装に提供されるものと同じくらいの正確なもののみです。 アプリケーションは提供されたデータを、このルールの実装で使用できる最良な情報を表すものとして処理してください。

実装要件:
このクラスは不変でスレッドセーフです。
導入されたバージョン:
1.8
関連項目:
  • メソッドの詳細

    • of

      public static ZoneRules of(ZoneOffset baseStandardOffset, ZoneOffset baseWallOffset, List<ZoneOffsetTransition> standardOffsetTransitionList, List<ZoneOffsetTransition> transitionList, List<ZoneOffsetTransitionRule> lastRules)
      ZoneRulesのインスタンスを取得します。
      パラメータ:
      baseStandardOffset - 有効なルールが設定される前に使用する標準オフセット、nullでない
      baseWallOffset - 有効なルールが設定される前に使用するウォール・オフセット、nullでない
      standardOffsetTransitionList - 標準オフセットへの変更のリスト、nullでない
      transitionList - 遷移のリスト、nullでない
      lastRules - 繰り返しの最後のルール、サイズは16桁以下、nullでない
      戻り値:
      ゾーン・ルール、nullでない
    • of

      public static ZoneRules of(ZoneOffset offset)
      固定ゾーン・ルールを持つZoneRulesのインスタンスを取得します。
      パラメータ:
      offset - この固定ゾーン・ルールが基づくオフセット、nullでない
      戻り値:
      ゾーン・ルール、nullでない
      関連項目:
    • isFixedOffset

      public boolean isFixedOffset()
      オフセットが変化しないように、ゾーン・ルールが固定されているかどうかを確認します。
      戻り値:
      タイムゾーンが固定され、オフセットが変更されない場合はtrue
    • getOffset

      public ZoneOffset getOffset(Instant instant)
      これらのルールで、指定されたインスタントに適用できるオフセットを取得します。

      時点からオフセットへのマッピングは単純であり、時点ごとに有効なオフセットは1つのみです。 このメソッドはそのオフセットを返します。

      パラメータ:
      instant - オフセットの検索対象のインスタント、nullでない、ただし、ルールがすべてのインスタントに単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      オフセット、nullでない
    • getOffset

      public ZoneOffset getOffset(LocalDateTime localDateTime)
      これらのルールで、指定されたローカル日付/時間に適したオフセットを取得します。

      ローカル日付/時間からオフセットへのマッピングは単純ではありません。 3つのケースがあります。

      • 通常、有効なオフセットが1つ。 年の大部分は通常ケースが適用されます。ローカル日付/時間に有効なオフセットが1つ存在します。
      • ギャップ、有効なオフセットがゼロ。 これは一般的に、春サマー・タイムが冬から夏に変わったために、クロックが前方向にジャンプするときです。 ギャップには、有効なオフセットを持たないローカル日付/時間値が存在します。
      • 重複、有効なオフセットが2つ。 これは一般的に、秋サマー・タイムが夏から冬に変わったために、クロックが後方向に戻るときです。 重複には、有効なオフセットを2つ持つローカル日付/時間値が存在します。
      したがって、指定されたローカル日付/時間に対して、有効なオフセットは0個、1個または2個の可能性があります。 このメソッドは、通常ケースでは単一のオフセットを返します。ギャップまたは重複ケースでは遷移前のオフセットを返します。

      ギャップまたは重複の場合、返されるオフセットは"正しい"値というよりも"最適な"値であるため、注意して処理する必要があります。 正しいオフセットを考慮するアプリケーションは、getValidOffsets(LocalDateTime)メソッドとgetTransition(LocalDateTime)メソッドの組み合わせを使用してください。

      パラメータ:
      localDateTime - 問い合わせるローカル日付/時間、nullでない、ただし、ルールがすべての時点に単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      ローカル日付/時間に使用できる最適なオフセット、nullでない
    • getValidOffsets

      public List<ZoneOffset> getValidOffsets(LocalDateTime localDateTime)
      これらのルールで、指定されたローカル日付/時間に適用できるオフセットを取得します。

      ローカル日付/時間からオフセットへのマッピングは単純ではありません。 3つのケースがあります。

      • 通常、有効なオフセットが1つ。 年の大部分は通常ケースが適用されます。ローカル日付/時間に有効なオフセットが1つ存在します。
      • ギャップ、有効なオフセットがゼロ。 これは一般的に、春サマー・タイムが冬から夏に変わったために、クロックが前方向にジャンプするときです。 ギャップには、有効なオフセットを持たないローカル日付/時間値が存在します。
      • 重複、有効なオフセットが2つ。 これは一般的に、秋サマー・タイムが夏から冬に変わったために、クロックが後方向に戻るときです。 重複には、有効なオフセットを2つ持つローカル日付/時間値が存在します。
      したがって、指定されたローカル日付/時間に対して、有効なオフセットは0個、1個または2個の可能性があります。 このメソッドは、有効なオフセットのリストを返します。リストのサイズは0、1または2です。 2つのオフセットがある場合、先のオフセットはインデックス0で返され、後のオフセットはインデックス1で返されます。

      LocalDateTimeからの変換を処理するために様々な方法があります。 このメソッドを使用した1つの方法は次のようになります。

        List<ZoneOffset> validOffsets = rules.getValidOffsets(localDT);
        if (validOffsets.size() == 1) {
          // Normal case: only one valid offset
          zoneOffset = validOffsets.get(0);
        } else {
          // Gap or Overlap: determine what to do from transition (which will be non-null)
          ZoneOffsetTransition trans = rules.getTransition(localDT);
        }
       

      理論上は、有効なオフセットが3つ以上ある可能性があります。 これは、時計を次々に複数回遅らせた場合に発生します。 これは、タイムゾーンの履歴で発生したことがないため特別な処理はありません。 ただし、発生した場合、リストは3つ以上のエントリを返します。

      パラメータ:
      localDateTime - 有効なオフセットを問い合わせるローカル日付/時間、nullでない、ただし、ルールがすべての時点に単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      有効なオフセットのリスト、不変の場合がある、nullでない
    • getTransition

      public ZoneOffsetTransition getTransition(LocalDateTime localDateTime)
      これらのルールで、指定されたローカル日付/時間に適用できるオフセット遷移を取得します。

      ローカル日付/時間からオフセットへのマッピングは単純ではありません。 3つのケースがあります。

      • 通常、有効なオフセットが1つ。 年の大部分は通常ケースが適用されます。ローカル日付/時間に有効なオフセットが1つ存在します。
      • ギャップ、有効なオフセットがゼロ。 これは一般的に、春サマー・タイムが冬から夏に変わったために、クロックが前方向にジャンプするときです。 ギャップには、有効なオフセットを持たないローカル日付/時間値が存在します。
      • 重複、有効なオフセットが2つ。 これは一般的に、秋サマー・タイムが夏から冬に変わったために、クロックが後方向に戻るときです。 重複には、有効なオフセットを2つ持つローカル日付/時間値が存在します。
      遷移はギャップまたは重複のケースをモデル化するために使用されます。 通常ケースはnullを返します。

      LocalDateTimeからの変換を処理するために様々な方法があります。 このメソッドを使用した1つの方法は次のようになります。

        ZoneOffsetTransition trans = rules.getTransition(localDT);
        if (trans != null) {
          // Gap or Overlap: determine what to do from transition
        } else {
          // Normal case: only one valid offset
          zoneOffset = rule.getOffset(localDT);
        }
       

      パラメータ:
      localDateTime - オフセット遷移を問い合わせるローカル日付/時間、nullでない、ただし、ルールがすべての時点に単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      オフセット遷移、ローカル日付/時間が遷移内にない場合はnull
    • getStandardOffset

      public ZoneOffset getStandardOffset(Instant instant)
      このゾーンでの指定されたインスタントの標準オフセットを取得します。

      これは、標準オフセットが時間とともにどのように変化したかの履歴情報へのアクセスを提供します。 標準オフセットはサマー・タイムが適用される前のオフセットです。 これは、通常は冬の間に適用できるオフセットです。

      パラメータ:
      instant - オフセット情報を検索するインスタント、nullでない、ただし、ルールがすべてのインスタントに単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      標準オフセット、nullでない
    • getDaylightSavings

      public Duration getDaylightSavings(Instant instant)
      このゾーンの指定されたインスタントに使用しているサマー・タイムの量を取得します。

      これにより、サマー・タイムの量が時間とともにどのように変化したかの履歴情報にアクセスできます。 これは標準オフセットと実際のオフセットの間の差異です。 通常、その量は冬の間がゼロで夏の間が1時間です。 タイムゾーンは秒ベースであるため、デュレーションのナノ秒部分はゼロになります。

      このデフォルト実装は、actualオフセットとstandardオフセットのデュレーションを計算します。

      パラメータ:
      instant - サマー・タイムを検索するインスタント、nullでない、ただし、ルールがすべてのインスタントに単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      標準オフセットと実際のオフセットの間の差異、nullでない
    • isDaylightSavings

      public boolean isDaylightSavings(Instant instant)
      指定されたインスタントがサマー・タイムにあるかどうかを確認します。

      これにより、指定した時点の標準オフセットと実際のオフセットが同じかどうかが確認されます。 同じでない場合は、サマー・タイムが有効であると想定されます。

      このデフォルト実装はactualオフセットとstandardオフセットを比較します。

      パラメータ:
      instant - オフセット情報を検索するインスタント、nullでない、ただし、ルールがすべてのインスタントに単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      標準オフセット、nullでない
    • isValidOffset

      public boolean isValidOffset(LocalDateTime localDateTime, ZoneOffset offset)
      オフセット日付/時間がこれらのルールに対して有効であるかどうかを確認します。

      有効であるには、ローカル日付/時間がギャップ内になく、オフセットが有効なオフセットのいずれかと一致する必要があります。

      このデフォルト実装は、指定されたオフセットがgetValidOffsets(java.time.LocalDateTime)に含まれるかどうかが確認されます。

      パラメータ:
      localDateTime - チェックする日付/時間、nullでない、ただし、ルールがすべての時点に単一のオフセットを使用している場合はnullが無視されることがある
      offset - チェック対象のオフセット、nullはfalseを返す
      戻り値:
      これらのルールのオフセット日付/時間が有効な場合はtrue
    • nextTransition

      public ZoneOffsetTransition nextTransition(Instant instant)
      指定されたインスタント後の次の遷移を取得します。

      これは、指定した時点後の次の遷移の詳細を返します。 たとえば、時点がサマー・タイムが適用されるポイントを表す場合、メソッドは次のウィンター・タイムの遷移を返します。

      パラメータ:
      instant - このインスタントの後に次の遷移を取得する、nullでない、ただし、ルールがすべてのインスタントに単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      指定された時点後の次の遷移、最後の遷移後の場合はnull
    • previousTransition

      public ZoneOffsetTransition previousTransition(Instant instant)
      指定されたインスタント前の前の遷移を取得します。

      これは、指定された瞬間の前の遷移の詳細を返します。 たとえば、時点がサマー・タイムが適用されるポイントを表す場合、メソッドは前のウィンター・タイムからの遷移を返します。

      パラメータ:
      instant - このインスタントの後に前の遷移を取得する、nullでない、ただし、ルールがすべてのインスタントに単一のオフセットを使用している場合はnullが無視されることがある
      戻り値:
      指定された瞬間の前の前の遷移、最初の遷移の前の場合はnull
    • getTransitions

      public List<ZoneOffsetTransition> getTransitions()
      完全に定義された遷移の完全なリストを取得します。

      このルール・インスタンスの完全な遷移セットは、このメソッドとgetTransitionRules()で定義されます。 このメソッドは、完全に定義されている遷移を返します。 これらは、通常は履歴ですが、将来の場合もあります。

      このリストは、固定オフセット・ルールの場合や単一オフセットのみが存在したタイムゾーンの場合は空になります。 遷移ルールが不明の場合もリストが空になります。

      戻り値:
      完全に定義された遷移の不変リスト、nullでない
    • getTransitionRules

      public List<ZoneOffsetTransitionRule> getTransitionRules()
      遷移リストに定義されているものを超える年数の遷移ルールのリストを取得します。

      このルール・インスタンスの完全な遷移セットは、このメソッドとgetTransitions()で定義されます。 このメソッドは、遷移発生時用のアルゴリズムを定義するZoneOffsetTransitionRuleのインスタンスを返します。

      指定されたZoneRulesについて、このリストは完全に定義されている年を超える年の遷移ルールを含みます。 これらのルールは通常、将来のサマー・タイム・ルール変更を指します。

      ゾーンがサマー・タイムを将来に定義した場合、リストは、通常はサイズが2になり、サマー・タイムの開始または終了に関する情報を保持します。 ゾーンがサマー・タイムを持たない場合や、将来の変更に関する情報が不明確な場合、リストは空になります。

      リストは、固定オフセット・ルールの場合やサマー・タイムがないタイムゾーンの場合は空になります。 遷移ルールが不明の場合もリストが空になります。

      戻り値:
      遷移ルールの不変リスト、nullでない
    • equals

      public boolean equals(Object otherRules)
      このルール・セットが別のものと等しいかどうかを確認します。

      指定された入力時点またはローカル日付/時間について2つのルール・セットが常に同じ出力になる場合、それらは等しいです。 2つの異なるグループからのルールは、実際には同じ場合でもfalseを返すことがあります。

      この定義は、それら全体の状態を比較する実装になるはずです。

      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      otherRules - 他方のルール、nullはfalseを返す
      戻り値:
      このルールが指定されたものと同じ場合はtrue
      関連項目:
    • hashCode

      public int hashCode()
      #equalsの定義を前提として適切なハッシュ・コードを返します。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      ハッシュ・コード
      関連項目:
    • toString

      public String toString()
      このオブジェクトを説明する文字列を返します。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      デバッグ用の文字列、nullでない