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

クラスZoneOffset

  • すべての実装されたインタフェース:
    Serializable, Comparable<ZoneOffset>, TemporalAccessor, TemporalAdjuster

    public final class ZoneOffset
    extends ZoneId
    implements TemporalAccessor, TemporalAdjuster, Comparable<ZoneOffset>, Serializable
    グリニッジ/UTCからのタイムゾーン・オフセット(+02:00など)。

    タイムゾーン・オフセットは、タイムゾーンがグリニッジ/UTCと異なる期間です。 これは通常、時と分からなる固定の数値です。

    タイムゾーン・オフセットは世界の地域ごとに異なります。 場所や時期によってオフセットがどう変わるかについてのルールは、ZoneIdクラスで返されます。

    たとえば、パリは、冬にはグリニッジ/UTCから1時間進み、夏には2時間進みます。 パリのZoneIdインスタンスは2つのZoneOffsetインスタンス(冬は+01:00インスタンス、夏は+02:00インスタンス)を参照します。

    2008年に、世界中のタイムゾーン・オフセットが-12:00から+14:00までに拡張されました。 範囲が拡張されることに関する問題を回避し、さらに検証を提供するために、オフセットの範囲は-18:00から18:00までに制限されています。

    このクラスはISO暦体系で使用するように設計されています。 時間、分および秒のフィールドは、それらの標準ISO定義に対して有効であることを前提としています。 このクラスは、時間フィールドの定義がISO暦体系のものと一致する場合には、他の暦体系で使用できます。

    ZoneOffsetのインスタンスは、equals(java.lang.Object)を使用して比較される必要があります。 実装は一部の共通オフセットをキャッシュすることを選択できますが、アプリケーションはそのようなキャッシュに依存してはいけません。

    これは値ベースのクラスなので、ID依存操作(参照等価性(==)、IDハッシュ・コード、同期など)をZoneOffsetのインスタンスで使用することは、予期できない結果になる可能性があり、避けてください。 比較する場合は、equalsメソッドを使用することをお薦めします。

    実装要件:
    このクラスは不変でスレッドセーフです。
    導入されたバージョン:
    1.8
    関連項目:
    直列化された形式
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      static ZoneOffset MAX
      サポートされる最大オフセットの定数です。
      static ZoneOffset MIN
      サポートされる最小のオフセットの定数です。
      static ZoneOffset UTC
      UTC用のタイムゾーン・オフセット(IDがZ)。
    • フィールドの詳細

      • UTC

        public static final ZoneOffset UTC
        UTC用のタイムゾーン・オフセット(IDがZ)。
      • MIN

        public static final ZoneOffset MIN
        サポートされる最小のオフセットの定数です。
      • MAX

        public static final ZoneOffset MAX
        サポートされる最大オフセットの定数です。
    • メソッドの詳細

      • of

        public static ZoneOffset of​(String offsetId)
        IDを使用してZoneOffsetのインスタンスを取得します。

        このメソッドはZoneOffsetの文字列IDを解析してインスタンスを返します。 解析は、getId()によって生成されるすべてのフォーマットと、いくつかの追加フォーマットを受け入れます。

        • Z - UTC用
        • +h
        • +hh
        • +hh:mm
        • -hh:mm
        • +hhmm
        • -hhmm
        • +hh:mm:ss
        • -hh:mm:ss
        • +hhmmss
        • -hhmmss
        ±はプラス記号またはマイナス記号を意味します。

        返されるオフセットのIDは、getId()によって記述されるフォーマットのいずれかに正規化されます。

        サポートされる最大範囲は+18:00から-18:00(これを含む)です。

        パラメータ:
        offsetId - オフセットID、nullでない
        戻り値:
        ゾーン・オフセット、nullでない
        例外:
        DateTimeException - オフセットが無効な場合。
      • ofHours

        public static ZoneOffset ofHours​(int hours)
        オフセット(時)を使用してZoneOffsetのインスタンスを取得します。
        パラメータ:
        hours - タイムゾーン・オフセット(時)、-18から+18
        戻り値:
        ゾーン・オフセット、nullでない
        例外:
        DateTimeException - オフセットが要求範囲にない場合
      • ofHoursMinutes

        public static ZoneOffset ofHoursMinutes​(int hours,
                                                int minutes)
        オフセット(時と分)を使用してZoneOffsetのインスタンスを取得します。

        時間および分コンポーネントの記号は一致する必要があります。 つまり、時が負の場合は、分は負またはゼロである必要があります。 時がゼロの場合は、分は正、負またはゼロが許可されます。

        パラメータ:
        hours - タイムゾーン・オフセット(時)、-18から+18
        minutes - タイムゾーン・オフセット(分)、-0から±59、記号は時と一致
        戻り値:
        ゾーン・オフセット、nullでない
        例外:
        DateTimeException - オフセットが要求範囲にない場合
      • ofHoursMinutesSeconds

        public static ZoneOffset ofHoursMinutesSeconds​(int hours,
                                                       int minutes,
                                                       int seconds)
        オフセット(時、分および秒)を使用してZoneOffsetのインスタンスを取得します。

        時、分および秒コンポーネントの記号は一致する必要があります。 つまり、時が負である場合、分と秒は負またはゼロである必要があります。

        パラメータ:
        hours - タイムゾーン・オフセット(時)、-18から+18
        minutes - タイムゾーン・オフセット(分)、-0から±59、記号は時および秒と一致
        seconds - タイムゾーン・オフセット(秒)、-0から±59、記号は時および分と一致
        戻り値:
        ゾーン・オフセット、nullでない
        例外:
        DateTimeException - オフセットが要求範囲にない場合
      • from

        public static ZoneOffset from​(TemporalAccessor temporal)
        時間的オブジェクトからZoneOffsetのインスタンスを取得します。

        これは、指定された時間的オブジェクトに基づくオフセットを取得します。 TemporalAccessorは日付および時間情報の任意セットを表し、それをこのファクトリがZoneOffsetのインスタンスに変換します。

        TemporalAccessorは日付および時間情報のなんらかの形式を表します。 このファクトリは、任意の時間的オブジェクトをZoneOffsetのインスタンスに変換します。

        変換は、OFFSET_SECONDSフィールドを抽出することに依存する、TemporalQueries.offset()問合せを使用します。

        このメソッドは関数型インタフェースTemporalQueryのシグネチャに一致するため、メソッド参照ZoneOffset::fromを介して、問合せとして使用できます。

        パラメータ:
        temporal - 変換する一時オブジェクト、null以外
        戻り値:
        ゾーン・オフセット、nullでない
        例外:
        DateTimeException - ZoneOffsetに変換できない場合
      • ofTotalSeconds

        public static ZoneOffset ofTotalSeconds​(int totalSeconds)
        合計オフセット(秒)を指定してZoneOffsetのインスタンスを取得します。

        オフセットは、-18:00から+18:00の範囲(-64800から+64800に対応)内である必要があります。

        パラメータ:
        totalSeconds - 合計タイムゾーン・オフセット(秒)、-64800から+64800
        戻り値:
        ZoneOffset、nullでない
        例外:
        DateTimeException - オフセットが要求範囲にない場合
      • getTotalSeconds

        public int getTotalSeconds()
        合計ゾーン・オフセットを秒で取得します。

        これは、オフセット量にアクセスするための主要な方法です。 時、分および秒の各フィールドの合計を、時間に追加できる単一オフセットとして返します。

        戻り値:
        合計ゾーン・オフセット量(秒)
      • getId

        public String getId()
        正規化されたゾーン・オフセットIDを取得します。

        IDは、オフセット用の標準ISO-8601書式文字列とわずかに異なります。 3つのフォーマットがあります。

        • Z - UTC用(ISO-8601)
        • +hh:mmまたは-hh:mm - 秒がゼロの場合(ISO-8601)
        • +hh:mm:ssまたは-hh:mm:ss - 秒がゼロでない場合(非ISO-8601)
        定義:
        getId、クラス: ZoneId
        戻り値:
        ゾーン・オフセットID、nullでない
      • getRules

        public ZoneRules getRules()
        関連付けられたタイムゾーン・ルールを取得します。

        ルールは常に、照会時にこのオフセットを返します。 実装クラスは不変、スレッドセーフ、直列化可能です。

        定義:
        getRules、クラス ZoneId
        戻り値:
        ルール、nullでない
      • isSupported

        public boolean isSupported​(TemporalField field)
        指定されたフィールドがサポートされているかどうかをチェックします。

        これは、指定されたフィールドについてこのオフセットを照会できるかどうかをチェックします。 falseの場合、rangeメソッドとgetメソッドを呼び出すと例外がスローされます。

        フィールドがChronoFieldの場合、ここに問合せを実装します。 OFFSET_SECONDSフィールドはtrueを返します。 他のすべてのChronoFieldインスタンスはfalseを返します。

        フィールドがChronoFieldでない場合、このメソッドの結果は、thisを引数として渡してTemporalField.isSupportedBy(TemporalAccessor)を呼び出すことによって取得します。 フィールドがサポートされているかどうかはフィールドによって決定します。

        定義:
        インタフェースTemporalAccessorisSupported
        パラメータ:
        field - チェックするフィールド、nullはfalseを返す
        戻り値:
        フィールドがこのオフセットでサポートされている場合はtrue、そうでない場合はfalse
      • range

        public ValueRange range​(TemporalField field)
        指定されたフィールドの有効な値の範囲を取得します。

        範囲オブジェクトはフィールドの有効な最小値と最大値を表します。 このオフセットは、返される範囲の精度を上げるために使用されます。 範囲を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。

        フィールドがChronoFieldの場合、ここに問合せを実装します。 サポートされるフィールドは適切な範囲のインスタンスを返します。 他のすべてのChronoFieldインスタンスはUnsupportedTemporalTypeExceptionをスローします。

        フィールドがChronoFieldではない場合、このメソッドの結果は、引数としてthisを渡してTemporalField.rangeRefinedBy(TemporalAccessor)を呼び出すことにより取得されます。 範囲を取得できるかどうかはフィールドによって決まります。

        定義:
        インタフェースTemporalAccessorrange
        パラメータ:
        field - 範囲を問い合わせるフィールド、null以外
        戻り値:
        フィールドの有効値の範囲。null以外
        例外:
        DateTimeException - フィールドの範囲を取得できない場合
        UnsupportedTemporalTypeException - フィールドがサポートされていない場合
      • get

        public int get​(TemporalField field)
        このオフセットから指定されたフィールドの値をintとして取得します。

        これは、指定されたフィールドの値についてこのオフセットに問い合せます。 返される値は常にフィールドの値の有効な範囲内になります。 値を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。

        フィールドがChronoFieldの場合、ここに問合せを実装します。 OFFSET_SECONDSフィールドはオフセットの値を返します。 他のすべてのChronoFieldインスタンスはUnsupportedTemporalTypeExceptionをスローします。

        フィールドがChronoFieldではない場合、このメソッドの結果は、引数としてthisを渡してTemporalField.getFrom(TemporalAccessor)を呼び出すことにより取得されます。 値を取得できるかどうか、および値が何を表すかは、フィールドによって決まります。

        定義:
        インタフェースTemporalAccessorget
        パラメータ:
        field - 取得するフィールド、null以外
        戻り値:
        フィールドの値
        例外:
        DateTimeException - フィールドの値を取得できない場合、または値がフィールドの有効な値の範囲外の場合
        UnsupportedTemporalTypeException - フィールドがサポートされていない場合、または値の範囲がintを超えている場合
        ArithmeticException - 数値のオーバーフローが発生した場合
      • getLong

        public long getLong​(TemporalField field)
        このオフセットから指定されたフィールドの値をlongとして取得します。

        これは、指定されたフィールドの値についてこのオフセットに問い合せます。 値を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。

        フィールドがChronoFieldの場合、ここに問合せを実装します。 OFFSET_SECONDSフィールドはオフセットの値を返します。 他のすべてのChronoFieldインスタンスはUnsupportedTemporalTypeExceptionをスローします。

        フィールドがChronoFieldではない場合、このメソッドの結果は、引数としてthisを渡してTemporalField.getFrom(TemporalAccessor)を呼び出すことにより取得されます。 値を取得できるかどうか、および値が何を表すかは、フィールドによって決まります。

        定義:
        インタフェースTemporalAccessorgetLong
        パラメータ:
        field - 取得するフィールド、null以外
        戻り値:
        フィールドの値
        例外:
        DateTimeException - フィールドの値を取得できない場合
        UnsupportedTemporalTypeException - フィールドがサポートされていない場合
        ArithmeticException - 数値のオーバーフローが発生した場合
      • query

        public <R> R query​(TemporalQuery<R> query)
        指定された問合せを使用してこのオフセットを問い合せます。

        これは、指定された問合せ戦略オブジェクトを使用して、このオフセットを照会します。 TemporalQueryオブジェクトは結果を取得するために使用するロジックを定義します。 このメソッドの結果を理解するには、問合せのドキュメントをお読みください。

        このメソッドの結果は、thisを引数として渡して、指定した問合せでTemporalQuery.queryFrom(TemporalAccessor)メソッドを呼び出すことによって取得します。

        定義:
        インタフェースTemporalAccessorquery
        型パラメータ:
        R - 結果の型
        パラメータ:
        query - 呼び出す問合せ、null以外
        戻り値:
        問合せ結果、nullが返されることがある(問合せによって定義される)
        例外:
        DateTimeException - 問い合わせできない場合(問合せによって定義される)
        ArithmeticException - 数値のオーバーフローが発生した場合(問合せによって定義される)
      • adjustInto

        public Temporal adjustInto​(Temporal temporal)
        指定された時間的オブジェクトをこのオブジェクトと同じオフセットになるように調整します。

        これは、オフセットがこれと同じに変更された状態で、入力と同じ観察可能型の時間的オブジェクトを返します。

        調整は、ChronoField.OFFSET_SECONDSをフィールドとして渡してTemporal.with(TemporalField, long)を使用することと同等です。

        ほとんどのケースで、Temporal.with(TemporalAdjuster)を使用して、呼び出しパターンを逆にすると明確になります。

           // these two lines are equivalent, but the second approach is recommended
           temporal = thisOffset.adjustInto(temporal);
           temporal = temporal.with(thisOffset);
         

        このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

        定義:
        インタフェースTemporalAdjusteradjustInto
        パラメータ:
        temporal - 調整するターゲット・オブジェクト、null以外
        戻り値:
        調整されるオブジェクト、null以外
        例外:
        DateTimeException - 調整を実行できない場合
        ArithmeticException - 数値のオーバーフローが発生した場合
      • compareTo

        public int compareTo​(ZoneOffset other)
        このオフセットを別のオフセットと降順で比較します。

        オフセットは、世界中の同じ時間に出現する順序で比較されます。 つまり、+10:00のオフセットは、-18:00のオフセットの前に出現します(これが+09:00まで続きます)。

        Comparableで定義されているように、比較はequalsと一致します。

        定義:
        compareTo 、インタフェース Comparable<ZoneOffset>
        パラメータ:
        other - 比較する他方の日付、null以外
        戻り値:
        コンパレータ値、小さい場合は負、大きい場合は正
        例外:
        NullPointerException - otherがnullである場合
      • equals

        public boolean equals​(Object obj)
        このオフセットが別のオフセットと等しいかどうかをチェックします。

        比較はオフセット量(秒)ベースです。 これはIDによる比較と同等です。

        オーバーライド:
        equals、クラス: ZoneId
        パラメータ:
        obj - チェックするオブジェクト、nullはfalseを返す
        戻り値:
        これが他方のオフセットと等しい場合はtrue
        関連項目:
        Object.hashCode()HashMap
      • toString

        public String toString()
        正規化IDを使用して、このオフセットをStringとして出力します。
        オーバーライド:
        toString、クラス: ZoneId
        戻り値:
        このオフセットの文字列表現、nullでない