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

クラスJapaneseDate

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

    public final class JapaneseDate
    extends Object
    implements ChronoLocalDate, Serializable
    和暦体系の日付。

    この日付は和暦を使用して、運用されます。 この暦体系は主に日本で使用されています。

    和暦体系は、紀元ベースの年の番号付けを除いて、ISO暦体系と同じです。 先発暦の年は、ISO先発暦の年と等しく定義されます。

    日本では明治6年からグレゴリオ暦を導入しています。 明治以降の紀元のみサポートされ、明治6年1月1日より前の日付はサポートされません。

    たとえば、和暦の年「Heisei 24」はISO暦の年「2012」に対応します。
    japaneseDate.get(YEAR_OF_ERA)を呼び出すと、24が返されます。

    japaneseDate.get(YEAR)を呼び出すと、2012が返されます。

    japaneseDate.get(ERA)を呼び出すと、2が返され、JapaneseChronology.ERA_HEISEIに対応します。

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

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

      • now

        public static JapaneseDate now()
        デフォルトのタイムゾーンのシステム・クロックから現在のJapaneseDateを取得します。

        これは、デフォルトのタイムゾーンのsystem clockを問い合わせ、現在の日付を取得します。

        このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。

        戻り値:
        システムクロックとデフォルトのタイムゾーンを使用した現在の日付、null以外
      • now

        public static JapaneseDate now​(ZoneId zone)
        指定されたタイムゾーンのシステム・クロックから現在のJapaneseDateを取得します。

        これはsystem clockを問い合わせて、現在の日付を取得します。 タイムゾーンを指定すると、デフォルトのタイムゾーンへの依存を避けられます。

        このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。

        パラメータ:
        zone - 使用するゾーンID、null以外
        戻り値:
        システムクロックを使用した現在の日付、null以外
      • now

        public static JapaneseDate now​(Clock clock)
        指定されたクロックから現在のJapaneseDateを取得します。

        これは指定されたクロックを問い合わせ、現在の日付(今日)を取得します。 このメソッドを使用すると、テストに代替のクロックを使用できます。 代替のクロックは依存性注入を使用して導入できます。

        パラメータ:
        clock - 使用するクロック、null以外
        戻り値:
        現在の日付、null以外
        例外:
        DateTimeException - 現在の日付を取得できない場合
      • of

        public static JapaneseDate of​(JapaneseEra era,
                                      int yearOfEra,
                                      int month,
                                      int dayOfMonth)
        紀元年、月、および「月の日」フィールドから、和暦体系の日付を表すJapaneseDateを取得します。

        これは、指定されたフィールドでJapaneseDateを返します。 日は年と月に対して有効である必要があり、そうでない場合は、例外がスローされます。

        和暦の月と「月の日」はISO暦体系のそれらと同じです。 それらは、紀元が変わってもリセットされません。 たとえば、

          6th Jan Showa 64 = ISO 1989-01-06
          7th Jan Showa 64 = ISO 1989-01-07
          8th Jan Heisei 1 = ISO 1989-01-08
          9th Jan Heisei 1 = ISO 1989-01-09
         

        パラメータ:
        era - 和暦の紀元、null以外
        yearOfEra - 和暦の紀元年
        month - 和暦の月、1-12
        dayOfMonth - 和暦の「月の日」、1-31
        戻り値:
        和暦体系の日付、null以外
        例外:
        DateTimeException - フィールドの値が範囲外である場合、または月の日が月に対して無効である場合、または日付が和暦の紀元でない場合
      • of

        public static JapaneseDate of​(int prolepticYear,
                                      int month,
                                      int dayOfMonth)
        先発暦の年、月、および「月の日」フィールドから、和暦体系の日付を表すJapaneseDateを取得します。

        これは、指定されたフィールドでJapaneseDateを返します。 日は年と月に対して有効である必要があり、そうでない場合は、例外がスローされます。

        和暦の先発暦の年、月、「月の日」はISO暦体系のそれらと同じです。 それらは、紀元が変わってもリセットされません。

        パラメータ:
        prolepticYear - 和暦の先発暦の年
        month - 和暦の月、1-12
        dayOfMonth - 和暦の「月の日」、1-31
        戻り値:
        和暦体系の日付、null以外
        例外:
        DateTimeException - いずれかのフィールドの値が範囲外である場合、または月の日が年の月に対して無効である場合
      • from

        public static JapaneseDate from​(TemporalAccessor temporal)
        時間的オブジェクトからJapaneseDateを取得します。

        これは、指定された時間的オブジェクトに基づいて和暦体系での日付を取得します。 TemporalAccessorは任意の日付と時間情報のセットを表し、このファクトリがJapaneseDateのインスタンスに変換します。

        変換では一般に、暦体系全体で標準化されたEPOCH_DAYフィールドを使用します。

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

        パラメータ:
        temporal - 変換する一時オブジェクト、null以外
        戻り値:
        和暦体系の日付、null以外
        例外:
        DateTimeException - JapaneseDateに変換できない場合
        関連項目:
        Chronology.date(TemporalAccessor)
      • getChronology

        public JapaneseChronology getChronology()
        和暦体系であるこの日付の暦を取得します。

        Chronologyは使用中の暦体系を表します。 ChronoFieldの紀元およびその他のフィールドは暦によって定義されます。

        定義:
        インタフェースChronoLocalDategetChronology
        戻り値:
        和暦の暦、null以外
      • getEra

        public JapaneseEra getEra()
        この日付で使用可能な紀元を取得します。

        和暦体系には、JapaneseEraによって定義される複数の紀元があります。

        定義:
        インタフェースChronoLocalDategetEra
        戻り値:
        この日付に該当する紀元、null以外
      • lengthOfMonth

        public int lengthOfMonth()
        この日付によって表される月の長さを返します。

        これは月の長さを日数で返します。 月の長さはISO暦体系のそれらに一致します。

        定義:
        インタフェースChronoLocalDatelengthOfMonth
        戻り値:
        日数での月の長さ
      • isSupported

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

        これは、指定されたフィールドに対して、この日付を問合せできるかどうかをチェックします。 falseの場合、rangeメソッドとgetメソッドを呼び出すと例外がスローされます。

        フィールドがChronoFieldの場合、ここに問合せを実装します。 サポートされるフィールドは、次のとおりです。

        • DAY_OF_WEEK
        • DAY_OF_MONTH
        • DAY_OF_YEAR
        • EPOCH_DAY
        • MONTH_OF_YEAR
        • PROLEPTIC_MONTH
        • YEAR_OF_ERA
        • YEAR
        • ERA
        他のすべてのChronoFieldインスタンスはfalseを返します。

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

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

        public JapaneseDate with​(TemporalAdjuster adjuster)
        調整を行って、このオブジェクトと同じ型の調整済のオブジェクトを返します。

        これは、指定されたアジャスタのルールに従って、この日付/時間を調整します。 単純なアジャスタは、年フィールドなどの1つのフィールドだけを設定するなどです。 複雑なアジャスタは、日付を月の最後の日に設定するなどです。 一般的な調整の選択は、TemporalAdjustersで指定します。 これらには、月の最後の日や次の水曜日を見つけることが含まれます。 アジャスタは、さまざまな長さの月やうるう年などの特別なケースの処理を担当します。

        このメソッドを使用する方法と理由を示すいくつかのサンプル・コード:

          date = date.with(Month.JULY);        // most key classes implement TemporalAdjuster
          date = date.with(lastDayOfMonth());  // static import from Adjusters
          date = date.with(next(WEDNESDAY));   // static import from Adjusters and DayOfWeek
         

        定義:
        インタフェースChronoLocalDatewith
        定義:
        インタフェースTemporalwith
        パラメータ:
        adjuster - 使用するアジャスタ、null以外
        戻り値:
        指定された調整を行った同じ型のオブジェクト、null以外
        例外:
        DateTimeException - 調整を実行できない場合
        ArithmeticException - 数値のオーバーフローが発生した場合
      • plus

        public JapaneseDate plus​(TemporalAmount amount)
        このオブジェクトと同じ型のオブジェクトにある時間を追加したものを返します。

        これは、このtemporal (一時)を調整し、指定された量のルールに従って加算します。 この量は通常Periodですが、Durationなど、TemporalAmountインタフェースを実装する他のどの型であってもかまいません。

        このメソッドを使用する方法と理由を示すいくつかのサンプル・コード:

          date = date.plus(period);                // add a Period instance
          date = date.plus(duration);              // add a Duration instance
          date = date.plus(workingDays(6));        // example user-written workingDays method
         

        plusの後にminusを呼び出しても、同じ日付/時間が返されることは保証されません。

        定義:
        インタフェースChronoLocalDateplus
        定義:
        インタフェースTemporalplus
        パラメータ:
        amount - 追加する量、null以外
        戻り値:
        指定された調整を行った同じ型のオブジェクト、null以外
        例外:
        DateTimeException - 加算できない場合
        ArithmeticException - 数値のオーバーフローが発生した場合
      • minus

        public JapaneseDate minus​(TemporalAmount amount)
        量を減算して、このオブジェクトと同じ型のオブジェクトを返します。

        これは、このtemporal (一時)を調整し、指定された量のルールに従って減算します。 この量は通常Periodですが、Durationなど、TemporalAmountインタフェースを実装する他のどの型であってもかまいません。

        このメソッドを使用する方法と理由を示すいくつかのサンプル・コード:

          date = date.minus(period);               // subtract a Period instance
          date = date.minus(duration);             // subtract a Duration instance
          date = date.minus(workingDays(6));       // example user-written workingDays method
         

        plusの後にminusを呼び出しても、同じ日付/時間が返されることは保証されません。

        定義:
        インタフェースChronoLocalDateminus
        定義:
        インタフェースTemporalminus
        パラメータ:
        amount - 減算する量、null以外
        戻り値:
        指定された調整を行った同じ型のオブジェクト、null以外
        例外:
        DateTimeException - 減算ができない場合
        ArithmeticException - 数値のオーバーフローが発生した場合
      • equals

        public boolean equals​(Object obj)
        暦を含めて、この日付を別の日付と比較します。

        このJapaneseDateを別の日付と比較して、日付が同じであることを確認します。

        JapaneseDate型のオブジェクトのみが比較され、それ以外の型はfalseを返します。 2つの異なる暦の日付など、2つのTemporalAccessorインスタンスの日付を比較するには、コンパレータとしてChronoField.EPOCH_DAYを使用します。

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

        public long until​(Temporal endExclusive,
                          TemporalUnit unit)
        次のインタフェースからコピーされた説明: ChronoLocalDate
        もう一方の日付までの時間量を指定された単位で計算します。

        これは、1つのTemporalUnitの形で2つのChronoLocalDateオブジェクト間の時間の量を計算します。 開始点と終了点はthisと指定された日付です。 終了が開始より前である場合、結果は負になります。 このメソッドに渡されたTemporalChronology.date(TemporalAccessor)を使用してChronoLocalDateに変換されます。 計算では、2つの日付間の完全な単位の数を表す整数を返します。 たとえば、2つの日付間の日数での量は、startDate.until(endDate, DAYS)を使用して計算できます。

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

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

        計算はChronoUnitのこのメソッドに実装します。 単位DAYSWEEKSMONTHSYEARSDECADESCENTURIESMILLENNIA、およびERASはすべての実装でサポートしてください。 その他のChronoUnit値は例外をスローします。

        単位がChronoUnitでない場合、このメソッドの結果は、thisを1つ目の引数として、変換される入力temporal (一時)を2つ目の引数として渡してTemporalUnit.between(Temporal, Temporal)を呼び出すことによって取得します。

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

        定義:
        インタフェースChronoLocalDateuntil
        定義:
        インタフェースTemporaluntil
        パラメータ:
        endExclusive - 終了日、排他的、同じ暦でChronoLocalDateに変換される、null以外
        unit - 量を測定する単位、null以外
        戻り値:
        この日付と終了日の間の時間の量
      • toString

        public String toString()
        次のクラスからコピーされた説明: Object
        オブジェクトの文字列表現を返します。 一般に、toStringメソッドは、このオブジェクトを「テキストで表す」文字列を返します。 この結果は、人間が読める簡潔で有益な情報であるべきです。 すべてのサブクラスで、このメソッドをオーバーライドすることをお薦めします。

        クラスObjecttoStringメソッドは、オブジェクトがインスタンスになっている元のクラスの名前、アットマーク文字「@」、およびオブジェクトのハッシュ・コードの符号なし16進数表現から構成される文字列を返します。 つまり、このメソッドは次の値と等しい文字列を返します。

         getClass().getName() + '@' + Integer.toHexString(hashCode())
         

        定義:
        インタフェースChronoLocalDatetoString
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        このオブジェクトの文字列表現