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

列挙型ChronoUnit

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


    public enum ChronoUnit
    extends Enum<ChronoUnit>
    implements TemporalUnit
    日付期間の単位の標準セット。

    この単位セットは、日付、時間、または日付/時間を操作するための単位ベースのアクセスを提供します。 標準の単位セットは、TemporalUnitを実装することによって拡張できます。

    これらの単位は、複数の暦体系に適用できると想定されています。 たとえば、ISO以外の暦体系の多くは、ルールは多少異なっても、年、月、および日の単位を定義しています。 各単位のドキュメントには、その単位の動作が説明されています。

    実装要件:
    これは不変でスレッドセーフな最終の列挙型です。
    導入されたバージョン:
    1.8
    • 列挙型定数のサマリー

      列挙型定数 
      列挙型定数 説明
      CENTURIES
      1世紀の概念を表す単位。
      DAYS
      1日の概念を表す単位。
      DECADES
      1デケイドの概念を表す単位。
      ERAS
      1紀元の概念を表す単位。
      FOREVER
      永遠の概念を表す人為的単位。
      HALF_DAYS
      午前/午後で使用される半日の概念を表す単位。
      HOURS
      1時間の概念を表す単位。
      MICROS
      1マイクロ秒の概念を表す単位。
      MILLENNIA
      1ミレニアムの概念を表す単位。
      MILLIS
      1ミリ秒の概念を表す単位。
      MINUTES
      1分の概念を表す単位。
      MONTHS
      1か月の概念を表す単位。
      NANOS
      1ナノ秒の概念を表す単位。サポートされている最小の時間単位。
      SECONDS
      1秒の概念を表す単位。
      WEEKS
      1週の概念を表す単位。
      YEARS
      1年の概念を表す単位。
    • 列挙型定数の詳細

      • NANOS

        public static final ChronoUnit NANOS
        1ナノ秒の概念を表す単位。サポートされている最小の時間単位。 ISO暦体系の場合、これは秒の単位の1,000,000,000分の1と等しくなります。
      • MICROS

        public static final ChronoUnit MICROS
        1マイクロ秒の概念を表す単位。 ISO暦体系の場合、これは秒の単位の1,000,000分の1と等しくなります。
      • MILLIS

        public static final ChronoUnit MILLIS
        1ミリ秒の概念を表す単位。 ISO暦体系の場合、これは秒の単位の1000分の1と等しくなります。
      • SECONDS

        public static final ChronoUnit SECONDS
        1秒の概念を表す単位。 ISO暦体系の場合、うるう秒を除いて、これはSI単位系の秒と等しくなります。
      • MINUTES

        public static final ChronoUnit MINUTES
        1分の概念を表す単位。 ISO暦体系の場合、これは60秒と等しくなります。
      • HOURS

        public static final ChronoUnit HOURS
        1時間の概念を表す単位。 ISO暦体系の場合、これは60分と等しくなります。
      • HALF_DAYS

        public static final ChronoUnit HALF_DAYS
        午前/午後で使用される半日の概念を表す単位。 ISO暦体系の場合、これは12時間と等しくなります。
      • DAYS

        public static final ChronoUnit DAYS
        1日の概念を表す単位。 ISO暦体系の場合、これは深夜零時から深夜零時までの標準的な1日です。 1日の推定デュレーションは24時間です。

        他の暦体系で使用される場合、これは地球上の日の出と日の入りによって定義される日に対応する必要があります。 日が深夜零時に始まる必要はありません。暦体系の間の変換では、日付は正午において等価になるべきです。

      • WEEKS

        public static final ChronoUnit WEEKS
        1週の概念を表す単位。 ISO暦体系の場合、これは7日と等しくなります。

        他の暦体系で使用される場合、これは整数の日数に対応する必要があります。

      • MONTHS

        public static final ChronoUnit MONTHS
        1か月の概念を表す単位。 ISO暦体系の場合、1か月の長さは月によって異なります。 1か月の推定デュレーションは365.2425日の12分の1です。

        他の暦体系で使用される場合、これは整数の日数に対応する必要があります。

      • YEARS

        public static final ChronoUnit YEARS
        1年の概念を表す単位。 ISO暦体系の場合、これは12か月と等しくなります。 1年の推定デュレーションは365.2425日です。

        他の暦体系で使用される場合、これは太陽を中心とした地球の周回によって定義される1年にほぼ等しい、整数の日数または月数に対応する必要があります。

      • DECADES

        public static final ChronoUnit DECADES
        1デケイドの概念を表す単位。 ISO暦体系の場合、これは10年と等しくなります。

        他の暦体系で使用される場合、これは整数の日数に対応する必要があり、通常は整数の年数です。

      • CENTURIES

        public static final ChronoUnit CENTURIES
        1世紀の概念を表す単位。 ISO暦体系の場合、これは100年と等しくなります。

        他の暦体系で使用される場合、これは整数の日数に対応する必要があり、通常は整数の年数です。

      • MILLENNIA

        public static final ChronoUnit MILLENNIA
        1ミレニアムの概念を表す単位。 ISO暦体系の場合、これは1000年と等しくなります。

        他の暦体系で使用される場合、これは整数の日数に対応する必要があり、通常は整数の年数です。

      • ERAS

        public static final ChronoUnit ERAS
        1紀元の概念を表す単位。 ISO暦体系には紀元がないため、日付または日付/時間に紀元を加算することはできません。 紀元の推定デュレーションは1,000,000,000年として人為的に定義されています。

        他の暦体系で使用される場合、この単位に制約はありません。

      • FOREVER

        public static final ChronoUnit FOREVER
        永遠の概念を表す人為的単位。 これは主にTemporalFieldとともに使用され、年や紀元のような無制限のフィールドを表します。 このユニットの推定期間は、Durationによってサポートされる最大の期間として人為的に定義されます。
    • メソッドの詳細

      • values

        public static ChronoUnit[] values​()
        この列挙型の定数を含む配列を、宣言されている順序で返します。 このメソッドは、次のようにして定数を反復するために使用できます。
        for (ChronoUnit c : ChronoUnit.values())
            System.out.println(c);
        
        戻り値:
        この列挙型の定数を含む配列(宣言されている順序)
      • valueOf

        public static ChronoUnit valueOf​(String name)
        指定された名前を持つ、この型の列挙型定数を返します。 文字列は、この型の列挙型定数を宣言するのに使用した識別子と厳密に一致している必要があります。 (不適切な空白文字は許可されません。)
        パラメータ:
        name - 返される列挙型定数の名前。
        戻り値:
        指定された名前を持つ列挙型定数
        例外:
        IllegalArgumentException - 指定された名前を持つ定数をこの列挙型が持っていない場合
        NullPointerException - 引数がnullの場合
      • getDuration

        public Duration getDuration​()
        ISO暦体系におけるこの単位の推定デュレーションを取得します。

        このクラスの単位すべてに推定デュレーションがあります。 日の長さはサマー・タイムのために変化し、月の長さは様々です。

        定義:
        インタフェースTemporalUnitgetDuration
        戻り値:
        この単位の推定デュレーション。null以外
      • isDurationEstimated

        public boolean isDurationEstimated​()
        単位のデュレーションが推定値かどうかをチェックします。

        このクラスの時間の単位はすべて正確と見なされ、このクラスの日付の単位はすべて推定と見なされます。

        この定義では、うるう秒は無視されますが、日の長さはサマー・タイムのために変化し、月の長さは様々であることが考慮されます。

        定義:
        インタフェースTemporalUnitisDurationEstimated
        戻り値:
        デュレーションが推定の場合はtrue、正確な場合はfalse
      • isDateBased

        public boolean isDateBased​()
        この単位が日付の単位かどうかをチェックします。

        日から紀元まで(これらを含む)の単位は、すべて日付ベースです。 時間ベースの単位とFOREVERからはfalseが返されます。

        定義:
        インタフェースTemporalUnitisDateBased
        戻り値:
        日付の単位の場合はtrue、時間の単位の場合はfalse
      • isTimeBased

        public boolean isTimeBased​()
        この単位が時間の単位かどうかをチェックします。

        ナノ秒から半日まで(これらを含む)の単位は、すべて時間ベースです。 日付ベースの単位とFOREVERからはfalseが返されます。

        定義:
        インタフェースTemporalUnitisTimeBased
        戻り値:
        時間の単位の場合はtrue、日付の単位の場合はfalse
      • isSupportedBy

        public boolean isSupportedBy​(Temporal temporal)
        次のインタフェースからコピーされた説明: TemporalUnit
        指定された時間的オブジェクトでこの単位がサポートされているかどうかを確認します。

        これは、実装側の日付/時間がこの単位を加算/減算できることを確認します。 これを使用すると、例外のスローを回避できます。

        このデフォルトの実装は、Temporal.plus(long, TemporalUnit)を使用して値を求めます。

        定義:
        インタフェースTemporalUnitisSupportedBy
        パラメータ:
        temporal - チェックする時間的オブジェクト。null以外
        戻り値:
        単位がサポートされている場合はtrue
      • addTo

        public <R extends Temporal> R addTo​(R temporal,
                                            long amount)
        次のインタフェースからコピーされた説明: TemporalUnit
        指定された期間を加算して、指定された時間的オブジェクトのコピーを返します。

        加算される期間はこの単位の倍数です。 たとえば、このメソッドを使用して、ある日付に「3日」を加算することができます。それには、「日」を表すインスタンスに対してこのメソッドを呼び出し、日付と期間「3」を渡します。 加算する期間は負でもよく、それは減算と等価です。

        このメソッドを使用する等価な方法が2つあります。 1つ目はこのメソッドを直接呼び出すことです。 2つ目はTemporal.plus(long, TemporalUnit)を使用することです。

           // these two lines are equivalent, but the second approach is recommended
           temporal = thisUnit.addTo(temporal);
           temporal = temporal.plus(thisUnit);
         
        2つ目の方法plus(TemporalUnit)の方がコードを読むときにわかりやすいため、これを使用することをお薦めします。

        実装では、問合せや計算を実行する場合、ChronoUnitで使用可能な単位、またはChronoFieldで使用可能なフィールドを使用するようにしてください。 単位がサポートされていない場合は、UnsupportedTemporalTypeExceptionをスローする必要があります。

        実装では、指定された時間的オブジェクトを変更してはいけません。 かわりに、元のオブジェクトの調整済のコピーを返す必要があります。 これは、不変および可変の実装に安全で等価な動作を提供します。

        定義:
        インタフェースTemporalUnitaddTo
        型パラメータ:
        R - Temporalオブジェクトの型
        パラメータ:
        temporal - 調整する時間的オブジェクト。null以外
        amount - 加算するこの単位の量。正または負
        戻り値:
        調整された時間的オブジェクト。null以外
      • between

        public long between​(Temporal temporal1Inclusive,
                            Temporal temporal2Exclusive)
        次のインタフェースからコピーされた説明: TemporalUnit
        2つの時間的オブジェクトの間の時間量を計算します。

        これは、この単位で量を計算します。 開始点と終了点は時間的オブジェクトで指定され、互換性のある型でなければなりません。 実装では、2番目の型を最初の型のインスタンスに変換してから、量を計算します。 終了が開始より前である場合、結果は負になります。 たとえば、2つの時間的オブジェクト間の時間数での量は、HOURS.between(startTime, endTime)を使用して計算できます。

        計算では、2つの時間的オブジェクト間の完全な単位の数を表す整数を返します。 たとえば、時間11:30と13:29の間の量は、2時間には1分足りないため、時間数では1時間だけになります。

        このメソッドを使用する等価な方法が2つあります。 1つ目はこのメソッドを直接呼び出すことです。 2つ目はTemporal.until(Temporal, TemporalUnit)を使用することです。

           // these two lines are equivalent
           between = thisUnit.between(start, end);
           between = start.until(end, thisUnit);
         
        この選択は、コードが読みやすくなるのはどちらかに基づいて行ってください。

        たとえば、このメソッドを使用すると、2つの日付間の日数を計算できます。

          long daysBetween = DAYS.between(start, end);
          // or alternatively
          long daysBetween = start.until(end, DAYS);
         

        実装では、問合せや計算を実行する場合、ChronoUnitで使用可能な単位、またはChronoFieldで使用可能なフィールドを使用するようにしてください。 単位がサポートされていない場合は、UnsupportedTemporalTypeExceptionをスローする必要があります。 実装では、指定された時間的オブジェクトを変更してはいけません。

        定義:
        インタフェースTemporalUnitbetween
        パラメータ:
        temporal1Inclusive - ベースの時間的オブジェクト。null以外
        temporal2Exclusive - 他方の時間的オブジェクト(これを含まない)。null以外
        戻り値:
        temporal1Inclusiveとtemporal2Exclusiveの間の時間量をこの単位で表したもの。temporal2Exclusiveがtemporal1Inclusiveより後であれば正、前であれば負
      • toString

        public String toString​()
        次のクラスからコピーされた説明: Enum
        宣言に含まれるとおりのenum定数の名前を返します。 このメソッドは不要な場合や不適切な場合にオーバーライドできます。 より「プログラマフレンドリ」な文字列形式が存在する場合、enum型はこのメソッドをオーバーライドする必要があります。
        定義:
        インタフェースTemporalUnittoString
        オーバーライド:
        クラスEnum<ChronoUnit>toString
        戻り値:
        このenum定数の名前