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

クラスPeriod

java.lang.Object
java.time.Period
すべての実装されたインタフェース:
Serializable, ChronoPeriod, TemporalAmount

public final class Period extends Object implements ChronoPeriod, Serializable
ISO-8601暦体系における日付ベースの時間の量(「2年3か月と4日」など)。

このクラスは、時間の量を年、月、および日単位でモデル化します。 このクラスと同等の時間ベースのクラスについては、「Duration」を参照してください。

デュレーションと期間は、ZonedDateTimeに加算されるときのサマー・タイムの扱いが異なります。 Durationでは正確な秒数を加算するため、1日のデュレーションは常に24時間ちょうどになります。 これに対し、Periodでは概念的な日を加算して、ローカル時間を保持しようとします。

たとえば、サマー・タイムのギャップが生じる前に、1日の期間と1日のデュレーションを夕方の18:00に加算することを考えてみます。 Periodは概念的な日を加算するため、結果となるZonedDateTimeは翌日18:00になります。 これに対し、Durationは正確に24時間を加算するため、結果となるZonedDateTimeは翌日19:00となります(1時間のDSTギャップがあるものとする)。

サポートされている期間の単位は、YEARSMONTHS、およびDAYSです。 3つのフィールドはすべて常に存在しますが、ゼロに設定することもできます。

ISO-8601暦体系は、世界中の大部分で現在使われている近代の常用暦体系です。 これは、現在のうるう年のルールがすべての時間に適用される、先発グレゴリオ暦体系と同等です。

期間は、方向性のある時間の量としてモデル化されます。つまり、期間の個々の部分は負になることがあります。

これはvalue-basedクラスです。プログラマは、equalのインスタンスを交換可能として扱い、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。 比較する場合は、equalsメソッドを使用することをお薦めします。

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

    フィールド
    修飾子と型
    フィールド
    説明
    static final Period
    ゼロの期間を表す定数です。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    addTo(Temporal temporal)
    指定された時間的オブジェクトにこの期間を加算します。
    static Period
    between(LocalDate startDateInclusive, LocalDate endDateExclusive)
    2つの日付間の年数、月数、および日数で構成されるPeriodを取得します。
    boolean
    この期間がもう一方の期間と等しいかどうかを確認します。
    static Period
    時間的な量からPeriodのインスタンスを取得します。
    long
    要求された単位の値を取得します。
    ISO暦体系であるこの期間の暦を取得します。
    int
    この期間の日数を取得します。
    int
    この期間の月数を取得します。
    この期間でサポートされる一連の単位を取得します。
    int
    この期間の年数を取得します。
    int
    この期間のハッシュ・コード。
    boolean
    この期間の3つの単位のいずれかが負の値であるかどうかを確認します。
    boolean
    この期間の3つの単位すべてがゼロであるかどうかを確認します。
    minus(TemporalAmount amountToSubtract)
    指定された期間を減算して、この期間のコピーを返します。
    minusDays(long daysToSubtract)
    指定された日数を減算して、この期間のコピーを返します。
    minusMonths(long monthsToSubtract)
    指定された月数を減算して、この期間のコピーを返します。
    minusYears(long yearsToSubtract)
    指定された年数を減算して、この期間のコピーを返します。
    multipliedBy(int scalar)
    この期間の各要素に指定されたスカラーを掛けて、新しいインスタンスを返します。
    この期間の各量を否定した、新しいインスタンスを返します。
    その年数および月数を正規化して、この期間のコピーを返します。
    static Period
    of(int years, int months, int days)
    年数、月数、および日数を表すPeriodを取得します。
    static Period
    ofDays(int days)
    日数を表すPeriodを取得します。
    static Period
    ofMonths(int months)
    月数を表すPeriodを取得します。
    static Period
    ofWeeks(int weeks)
    週数を表すPeriodを取得します。
    static Period
    ofYears(int years)
    年数を表すPeriodを取得します。
    static Period
    PnYnMnDなどのテキスト文字列からPeriodを取得します。
    plus(TemporalAmount amountToAdd)
    この期間のコピーに指定された期間を追加したものを返します。
    plusDays(long daysToAdd)
    指定された日数を加算して、この期間のコピーを返します。
    plusMonths(long monthsToAdd)
    指定された月数を加算して、この期間のコピーを返します。
    plusYears(long yearsToAdd)
    指定された年数を加算して、この期間のコピーを返します。
    指定された時間的オブジェクトからこの期間を減算します。
    この期間をStringとして出力します(P6Y3M1Dなど)。
    long
    この期間の合計月数を取得します。
    withDays(int days)
    指定された日数を使って、この期間のコピーを返します。
    withMonths(int months)
    指定された月数を使って、この期間のコピーを返します。
    withYears(int years)
    指定された年数を使って、この期間のコピーを返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • ZERO

      public static final Period ZERO
      ゼロの期間を表す定数です。
  • メソッドの詳細

    • ofYears

      public static Period ofYears(int years)
      年数を表すPeriodを取得します。

      結果となる期間には、指定された年数が含まれます。 月数および日数単位はゼロになります。

      パラメータ:
      years - 年数(正または負)
      戻り値:
      年数による期間。null以外
    • ofMonths

      public static Period ofMonths(int months)
      月数を表すPeriodを取得します。

      結果となる期間には、指定された月数が含まれます。 年数および日数単位はゼロになります。

      パラメータ:
      months - 月数(正または負)
      戻り値:
      月数による期間。null以外
    • ofWeeks

      public static Period ofWeeks(int weeks)
      週数を表すPeriodを取得します。

      結果となる期間は日ベースとなり、その日数は週数に7を掛けた値に等しくなります。 年数および月数単位はゼロになります。

      パラメータ:
      weeks - 週数(正または負)
      戻り値:
      入力された週数が日数に換算されている期間。null以外
    • ofDays

      public static Period ofDays(int days)
      日数を表すPeriodを取得します。

      結果となる期間には、指定された日数が含まれます。 年数および月数単位はゼロになります。

      パラメータ:
      days - 日数、正または負
      戻り値:
      日数による期間。null以外
    • of

      public static Period of(int years, int months, int days)
      年数、月数、および日数を表すPeriodを取得します。

      これは、年数、月数、および日数に基づいてインスタンスを作成します。

      パラメータ:
      years - 年数。負の場合もある
      months - 月数。負の場合もある
      days - 日数。負の場合もある
      戻り値:
      年数、月数、および日数による期間。null以外
    • from

      public static Period from(TemporalAmount amount)
      時間的な量からPeriodのインスタンスを取得します。

      これは、指定された量に基づいて期間を取得します。 TemporalAmountは時間量(日付ベースまたは時間ベースのどちらも可)を表し、それがこのファクトリで抽出されてPeriodになります。

      この変換では、量から単位のセットをループし、YEARSMONTHS、およびDAYSの単位を使用して期間を作成します。 他の単位が見つかった場合は、例外がスローされます。

      その量がChronoPeriodである場合は、ISO暦を使用する必要があります。

      パラメータ:
      amount - 変換する時間量、nullでない
      戻り値:
      同等の期間。null以外
      例外:
      DateTimeException - Periodに変換できない場合
      ArithmeticException - 年数、月数、または日数がintを超える場合
    • parse

      public static Period parse(CharSequence text)
      PnYnMnDなどのテキスト文字列からPeriodを取得します。

      これは、ISO-8601の期間フォーマットPnYnMnDおよびPnWに基づいている、toString()によって生成された文字列を解析します。

      文字列は、ASCIIマイナスまたはプラス記号で示されるオプション記号で始まります。 マイナスの場合は、期間全体がマイナスになります。 ASCII文字Pが大文字または小文字で続きます。 その後は4つセクションで、それぞれ数字と接尾辞で構成されます。 4つのセクションの少なくとも1つは存在している必要があります。 それらのセクションには、大文字または小文字で受け入れられる、年、月、週、および日を表す「Y」、「M」、「W」、および「D」というASCIIによる接尾辞があります。 接尾辞は順番に出現する必要があります。 各セクションの数値部分は、ASCII数字で構成されている必要があります。 数字の前に、ASCIIマイナスまたはプラス記号を付けることができます。 その数値はintに解析される必要があります。

      先頭のプラス/マイナス記号と他の単位の負の値は、ISO-8601標準の一部ではありません。 また、ISO-8601ではPnYnMnDフォーマットとPnWフォーマットの混在を許可していません。 週ベースの入力は、7を掛けることで日数として扱われます。

      たとえば、次の入力は有効です。

         "P2Y"             -- Period.ofYears(2)
         "P3M"             -- Period.ofMonths(3)
         "P4W"             -- Period.ofWeeks(4)
         "P5D"             -- Period.ofDays(5)
         "P1Y2M3D"         -- Period.of(1, 2, 3)
         "P1Y2M3W4D"       -- Period.of(1, 2, 25)
         "P-1Y2M"          -- Period.of(-1, 2, 0)
         "-P1Y2M"          -- Period.of(-1, -2, 0)
       

      パラメータ:
      text - 解析するテキスト。null以外
      戻り値:
      解析された期間。null以外
      例外:
      DateTimeParseException - そのテキストを期間に解析できない場合
    • between

      public static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive)
      2つの日付間の年数、月数、および日数で構成されるPeriodを取得します。

      開始日は含まれますが、終了日は含まれません。 この期間を計算するには、完全な月を削除してから、残りの日数を計算し、両方が同じ符号を持つように調整します。 次に、1年12か月に基づいて、月数が年数と月数に分けられます。 月の終了日が月の開始日に等しいか、それよりも大きい場合は、1か月とみなされます。 たとえば、2010-01-15から2011-03-18までは1年と2か月と3日です。

      このメソッドの結果は、終了が開始より前である場合に、負の期間になることがあります。 マイナス記号は年、月、日のそれぞれで同じになります。

      パラメータ:
      startDateInclusive - 開始日付(これを含む)。null以外
      endDateExclusive - 終了日付(これを含まない)。null以外
      戻り値:
      この日付と終了日の間の期間、null以外
      関連項目:
    • get

      public long get(TemporalUnit unit)
      要求された単位の値を取得します。

      これは、3つのサポートされている単位(YEARSMONTHS、およびDAYS)のそれぞれの値を返します。 他のすべての単位は例外をスローします。

      定義:
      get、インタフェース: ChronoPeriod
      定義:
      インタフェースTemporalAmountget
      パラメータ:
      unit - 値を返す対象のTemporalUnit
      戻り値:
      単位のlong値
      例外:
      DateTimeException - 単位がサポートされていない場合
      UnsupportedTemporalTypeException - 単位がサポートされていない場合
    • getUnits

      public List<TemporalUnit> getUnits()
      この期間でサポートされる一連の単位を取得します。

      サポートされている単位は、YEARSMONTHS、およびDAYSです。 それらは、年数、月数、日数の順序で返されます。

      このセットは、get(TemporalUnit)と一緒に使用して、期間の全体の状態にアクセスできます。

      定義:
      getUnits、インタフェース: ChronoPeriod
      定義:
      インタフェースTemporalAmountgetUnits
      戻り値:
      年数、月数、および日数単位を含むリスト。null以外
    • getChronology

      public IsoChronology getChronology()
      ISO暦体系であるこの期間の暦を取得します。

      Chronologyは使用中の暦体系を表します。 ISO-8601暦体系は、世界中の大部分で現在使われている近代の常用暦体系です。 これは、現在のうるう年のルールがすべての時間に適用される、先発グレゴリオ暦体系と同等です。

      定義:
      getChronology、インタフェース: ChronoPeriod
      戻り値:
      ISOの暦。null以外
    • isZero

      public boolean isZero()
      この期間の3つの単位すべてがゼロであるかどうかを確認します。

      ゼロの期間では、年数、月数、および日数単位の値はゼロになります。

      定義:
      isZero、インタフェース: ChronoPeriod
      戻り値:
      この期間がゼロの長さである場合true
    • isNegative

      public boolean isNegative()
      この期間の3つの単位のいずれかが負の値であるかどうかを確認します。

      これは、年数、月数、または日数単位がゼロ未満であるかどうかを確認します。

      定義:
      isNegative、インタフェース: ChronoPeriod
      戻り値:
      この期間のいずれかの単位が負の場合true
    • getYears

      public int getYears()
      この期間の年数を取得します。

      これは年数単位を返します。

      月数単位が年数単位を使って自動的に正規化されることはありません。 これは、「15か月」という期間が「1年と3か月」という期間とは異なることを意味します。

      戻り値:
      この期間の年数。負の値の場合もある
    • getMonths

      public int getMonths()
      この期間の月数を取得します。

      これは月数単位を返します。

      月数単位が年数単位を使って自動的に正規化されることはありません。 これは、「15か月」という期間が「1年と3か月」という期間とは異なることを意味します。

      戻り値:
      この期間の月数。負の値の場合もある
    • getDays

      public int getDays()
      この期間の日数を取得します。

      これは日数単位を返します。

      戻り値:
      この期間の日数。負の値の場合もある
    • withYears

      public Period withYears(int years)
      指定された年数を使って、この期間のコピーを返します。

      これは、この期間のコピーに年数単位の量を設定します。 月数および日数単位は影響を受けません。

      月数単位が年数単位を使って自動的に正規化されることはありません。 これは、「15か月」という期間が「1年と3か月」という期間とは異なることを意味します。

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

      パラメータ:
      years - 表される年数。負の場合もある
      戻り値:
      リクエストされた年数を含む、この期間に基づいたPeriod。null以外
    • withMonths

      public Period withMonths(int months)
      指定された月数を使って、この期間のコピーを返します。

      これは、この期間のコピーに月数単位の量を設定します。 年数および日数単位は影響を受けません。

      月数単位が年数単位を使って自動的に正規化されることはありません。 これは、「15か月」という期間が「1年と3か月」という期間とは異なることを意味します。

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

      パラメータ:
      months - 表される月数。負の場合もある
      戻り値:
      リクエストされた月数を含む、この期間に基づいたPeriod。null以外
    • withDays

      public Period withDays(int days)
      指定された日数を使って、この期間のコピーを返します。

      これは、この期間のコピーに日数単位の量を設定します。 年数および月数単位は影響を受けません。

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

      パラメータ:
      days - 表される日数。負の場合もある
      戻り値:
      リクエストされた日数を含む、この期間に基づいたPeriod。null以外
    • plus

      public Period plus(TemporalAmount amountToAdd)
      この期間のコピーに指定された期間を追加したものを返します。

      これは、年数、月数、および日数に対して別々に演算を行います。 正規化は実行されません。

      たとえば、「1年と6か月と3日」に「2年と2か月と2日」を加算すると、「3年と8か月と5日」が返されます。

      指定される量は通常、Periodのインスタンスになります。 他の型は、from(TemporalAmount)を使って解釈されます。

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

      定義:
      plus、インタフェース: ChronoPeriod
      パラメータ:
      amountToAdd - 加算する量、nullでない
      戻り値:
      リクエストされた期間が加算された、この期間に基づくPeriod。null以外
      例外:
      DateTimeException - 指定された量にISO以外の暦が含まれているか、無効な単位が含まれている場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plusYears

      public Period plusYears(long yearsToAdd)
      指定された年数を加算して、この期間のコピーを返します。

      これは、その量をこの期間のコピーの年数単位に加算します。 月数および日数単位は影響を受けません。 たとえば、「1年と6か月と3日」に2年を加算すると、「3年と6か月と3日」が返されます。

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

      パラメータ:
      yearsToAdd - 加算する年数(正または負)
      戻り値:
      指定された年数が加算された、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plusMonths

      public Period plusMonths(long monthsToAdd)
      指定された月数を加算して、この期間のコピーを返します。

      これは、その量をこの期間のコピーの月数単位に加算します。 年数および日数単位は影響を受けません。 たとえば、「1年と6か月と3日」に2か月を加算すると、「1年と8か月と3日」が返されます。

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

      パラメータ:
      monthsToAdd - 加算する月数(正または負)
      戻り値:
      指定された月数が加算された、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plusDays

      public Period plusDays(long daysToAdd)
      指定された日数を加算して、この期間のコピーを返します。

      これは、その量をこの期間のコピーの日数単位に加算します。 年数および月数単位は影響を受けません。 たとえば、「1年と6か月と3日」に2日を加算すると、「1年と6か月と5日」が返されます。

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

      パラメータ:
      daysToAdd - 加算する日数、正または負
      戻り値:
      指定された日数が加算された、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minus

      public Period minus(TemporalAmount amountToSubtract)
      指定された期間を減算して、この期間のコピーを返します。

      これは、年数、月数、および日数に対して別々に演算を行います。 正規化は実行されません。

      たとえば、「1年と6か月と3日」から「2年と2か月と2日」を減算すると、「-1年と4か月と1日」が返されます。

      指定される量は通常、Periodのインスタンスになります。 他の型は、from(TemporalAmount)を使って解釈されます。

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

      定義:
      minus、インタフェース: ChronoPeriod
      パラメータ:
      amountToSubtract - 減算する量、nullでない
      戻り値:
      リクエストされた期間が減算された、この期間に基づくPeriod。null以外
      例外:
      DateTimeException - 指定された量にISO以外の暦が含まれているか、無効な単位が含まれている場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minusYears

      public Period minusYears(long yearsToSubtract)
      指定された年数を減算して、この期間のコピーを返します。

      これは、その量をこの期間のコピーの年数単位から減算します。 月数および日数単位は影響を受けません。 たとえば、「1年と6か月と3日」から2年を減算すると、「-1年と6か月と3日」が返されます。

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

      パラメータ:
      yearsToSubtract - 減算する年数(正または負)
      戻り値:
      指定された年数が減算された、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minusMonths

      public Period minusMonths(long monthsToSubtract)
      指定された月数を減算して、この期間のコピーを返します。

      これは、その量をこの期間のコピーの月数単位から減算します。 年数および日数単位は影響を受けません。 たとえば、「1年と6か月と3日」から2か月を減算すると、「1年と4か月と3日」が返されます。

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

      パラメータ:
      monthsToSubtract - 減算する年数(正または負)
      戻り値:
      指定された月数が減算された、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minusDays

      public Period minusDays(long daysToSubtract)
      指定された日数を減算して、この期間のコピーを返します。

      これは、その量をこの期間のコピーの日数単位から減算します。 年数および月数単位は影響を受けません。 たとえば、「1年と6か月と3日」から2日を減算すると、「1年と6か月と1日」が返されます。

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

      パラメータ:
      daysToSubtract - 減算する月数(正または負)
      戻り値:
      指定された日数が減算された、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • multipliedBy

      public Period multipliedBy(int scalar)
      この期間の各要素に指定されたスカラーを掛けて、新しいインスタンスを返します。

      これは、年数、月数、および日数の各単位を個々に乗算して期間を返します。 たとえば、3を乗算した「2年、-3か月、4日」の期間は、「6年、-9か月、12日」を返します。 正規化は実行されません。

      定義:
      multipliedBy、インタフェース: ChronoPeriod
      パラメータ:
      scalar - 乗算するスカラー、null以外
      戻り値:
      その量にスカラーを乗じた、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • negated

      public Period negated()
      この期間の各量を否定した、新しいインスタンスを返します。

      これは、年数、月数、および日数の各単位を個々に否定して期間を返します。 たとえば、「2年、-3か月、4日」の期間は「-2年、3か月、-4日」に否定されます。 正規化は実行されません。

      定義:
      negated、インタフェース: ChronoPeriod
      戻り値:
      その量が否定された、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値オーバーフローが発生した場合(いずれかの単位の値がInteger.MIN_VALUEの場合のみ発生)
    • normalized

      public Period normalized()
      その年数および月数を正規化して、この期間のコピーを返します。

      これは、日数単位を変わらないままにして、年数および月数単位を正規化します。 月数単位は12未満の絶対値を持つように調整され、年数単位は補正のために調整されます。 たとえば、「1年と15か月」という期間は「2年と3か月」に正規化されます。

      年数および月数単位の符号は、正規化後も同じになります。 たとえば、「1年と-25か月」という期間は「-1年と-1か月」に正規化されます。

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

      定義:
      normalized、インタフェース: ChronoPeriod
      戻り値:
      超過している月数が年数に正規化された、この期間に基づくPeriod。null以外
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • toTotalMonths

      public long toTotalMonths()
      この期間の合計月数を取得します。

      これは、年数に12を掛け、月数を加算することで、その期間の合計月数を返します。

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

      戻り値:
      その期間の合計月数。負の値の場合もある
    • addTo

      public Temporal addTo(Temporal temporal)
      指定された時間的オブジェクトにこの期間を加算します。

      これは、この期間を加算した入力と同じ識別可能な型の時間的オブジェクトを返します。 その時間的オブジェクトに暦が含まれている場合は、ISO暦である必要があります。

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

         // these two lines are equivalent, but the second approach is recommended
         dateTime = thisPeriod.addTo(dateTime);
         dateTime = dateTime.plus(thisPeriod);
       

      この計算は次のように行われます。 まず、その時間的オブジェクトの暦がISO暦またはnullであることが確認されます。 次に、月数がゼロの場合は年数が加算され(ゼロでない場合)、それ以外の場合は年数と月数の組合せが加算されます(ゼロでない場合)。 最後に、すべての日数が加算されます。

      この方法では、部分的な期間を部分的な日付に確実に加算できます。 たとえば、年数または月数(あるいはその両方)の期間をYearMonthに加算できますが、日数を含む期間は加算できません。 この方法では、必要に応じて年数と月数をまとめて加算することで、月の終わりの処理が正しく行われるようにすることもできます。

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

      定義:
      addTo、インタフェース: ChronoPeriod
      定義:
      インタフェースTemporalAmountaddTo
      パラメータ:
      temporal - 調整する時間的オブジェクト。null以外
      戻り値:
      調整が行われた同じ型のオブジェクト、null以外
      例外:
      DateTimeException - 加算できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • subtractFrom

      public Temporal subtractFrom(Temporal temporal)
      指定された時間的オブジェクトからこの期間を減算します。

      これは、この期間を減算した入力と同じ識別可能な型の時間的オブジェクトを返します。 その時間的オブジェクトに暦が含まれている場合は、ISO暦である必要があります。

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

         // these two lines are equivalent, but the second approach is recommended
         dateTime = thisPeriod.subtractFrom(dateTime);
         dateTime = dateTime.minus(thisPeriod);
       

      この計算は次のように行われます。 まず、その時間的オブジェクトの暦がISO暦またはnullであることが確認されます。 次に、月数がゼロの場合は年数が減算され(ゼロでない場合)、それ以外の場合は年数と月数の組合わが減算されます(ゼロでない場合)。 最後に、すべての日数が減算されます。

      この方法では、部分的な期間を部分的な日付から確実に減算できます。 たとえば、年数または月数(あるいはその両方)の期間をYearMonthから減算できますが、日数を含む期間は減算できません。 この方法では、必要に応じて年数と月数をまとめて減算することで、月の終わりの処理が正しく行われるようにすることもできます。

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

      定義:
      subtractFrom、インタフェース: ChronoPeriod
      定義:
      インタフェースTemporalAmountsubtractFrom
      パラメータ:
      temporal - 調整する時間的オブジェクト。null以外
      戻り値:
      調整が行われた同じ型のオブジェクト、null以外
      例外:
      DateTimeException - 減算できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • equals

      public boolean equals(Object obj)
      この期間がもう一方の期間と等しいかどうかを確認します。

      この比較は、Period型と、3つの量のそれぞれに基づいて行われます。 等しくなるには、年数、月数、および日数単位が個々に等しい必要があります。 これは、「15か月」の期間が「1年と3か月」の期間と等しくないことを意味することに注意してください。

      定義:
      equals、インタフェース: ChronoPeriod
      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      obj - チェックするオブジェクト、nullはfalseを返す
      戻り値:
      これが他の期間と等しい場合はtrue
      関連項目:
    • hashCode

      public int hashCode()
      この期間のハッシュ・コード。
      定義:
      hashCode、インタフェース: ChronoPeriod
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      適切なハッシュ・コード
      関連項目:
    • toString

      public String toString()
      この期間をStringとして出力します(P6Y3M1Dなど)。

      この出力は、ISO-8601の期間フォーマットになります。 ゼロの期間は、ゼロの日数である「P0D」として表されます。

      定義:
      toString、インタフェース: ChronoPeriod
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      この期間の文字列表現、null以外