- 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ギャップがあるものとする)。サポートされている期間の単位は、
YEARS
、MONTHS
、およびDAYS
です。 3つのフィールドはすべて常に存在しますが、ゼロに設定することもできます。ISO-8601暦体系は、世界中の大部分で現在使われている近代の常用暦体系です。 これは、現在のうるう年のルールがすべての時間に適用される、先発グレゴリオ暦体系と同等です。
期間は、方向性のある時間の量としてモデル化されます。つまり、期間の個々の部分は負になることがあります。
これは値ベースのクラスです。
Period
のインスタンスに対して、アイデンティティの影響を受けやすい操作(参照型等価演算子(==
)、アイデンティティ・ハッシュ・コード、同期化など)を使用すると、予測できない結果が生じることがあるため、使わないようにしてください。 比較する場合は、equals
メソッドを使用することをお薦めします。- 実装要件:
- このクラスは不変でスレッドセーフです。
- 導入されたバージョン:
- 1.8
- 関連項目:
- 直列化された形式
-
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 Temporal
addTo(Temporal temporal)
指定された時間的オブジェクトにこの期間を加算します。static Period
between(LocalDate startDateInclusive, LocalDate endDateExclusive)
2つの日付間の年数、月数、および日数で構成されるPeriod
を取得します。boolean
equals(Object obj)
この期間がもう一方の期間と等しいかどうかを確認します。static Period
from(TemporalAmount amount)
時間的な量からPeriod
のインスタンスを取得します。long
get(TemporalUnit unit)
要求された単位の値を取得します。IsoChronology
getChronology()
ISO暦体系であるこの期間の暦を取得します。int
getDays()
この期間の日数を取得します。int
getMonths()
この期間の月数を取得します。List<TemporalUnit>
getUnits()
この期間でサポートされる一連の単位を取得します。int
getYears()
この期間の年数を取得します。int
hashCode()
この期間のハッシュ・コード。boolean
isNegative()
この期間の3つの単位のいずれかが負の値であるかどうかを確認します。boolean
isZero()
この期間の3つの単位すべてがゼロであるかどうかを確認します。Period
minus(TemporalAmount amountToSubtract)
指定された期間を減算して、この期間のコピーを返します。Period
minusDays(long daysToSubtract)
指定された日数を減算して、この期間のコピーを返します。Period
minusMonths(long monthsToSubtract)
指定された月数を減算して、この期間のコピーを返します。Period
minusYears(long yearsToSubtract)
指定された年数を減算して、この期間のコピーを返します。Period
multipliedBy(int scalar)
この期間の各要素に指定されたスカラーを掛けて、新しいインスタンスを返します。Period
negated()
この期間の各量を否定した、新しいインスタンスを返します。Period
normalized()
その年数および月数を正規化して、この期間のコピーを返します。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
parse(CharSequence text)
PnYnMnD
などのテキスト文字列からPeriod
を取得します。Period
plus(TemporalAmount amountToAdd)
この期間のコピーに指定された期間を追加したものを返します。Period
plusDays(long daysToAdd)
指定された日数を加算して、この期間のコピーを返します。Period
plusMonths(long monthsToAdd)
指定された月数を加算して、この期間のコピーを返します。Period
plusYears(long yearsToAdd)
指定された年数を加算して、この期間のコピーを返します。Temporal
subtractFrom(Temporal temporal)
指定された時間的オブジェクトからこの期間を減算します。String
toString()
この期間をString
として出力します(P6Y3M1D
など)。long
toTotalMonths()
この期間の合計月数を取得します。Period
withDays(int days)
指定された日数を使って、この期間のコピーを返します。Period
withMonths(int months)
指定された月数を使って、この期間のコピーを返します。Period
withYears(int years)
指定された年数を使って、この期間のコピーを返します。
-
-
-
フィールドの詳細
-
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
になります。この変換では、量から単位のセットをループし、
YEARS
、MONTHS
、および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以外
- 関連項目:
ChronoLocalDate.until(ChronoLocalDate)
-
get
public long get(TemporalUnit unit)
- 定義:
get
、インタフェースChronoPeriod
- 定義:
- インタフェース
TemporalAmount
のget
- パラメータ:
unit
- 値を返す対象のTemporalUnit
- 戻り値:
- 単位のlong値
- 例外:
DateTimeException
- 単位がサポートされていない場合UnsupportedTemporalTypeException
- 単位がサポートされていない場合
-
getUnits
public List<TemporalUnit> getUnits()
この期間でサポートされる一連の単位を取得します。サポートされている単位は、
YEARS
、MONTHS
、およびDAYS
です。 それらは、年数、月数、日数の順序で返されます。このセットは、
get(TemporalUnit)
と一緒に使用して、期間の全体の状態にアクセスできます。- 定義:
getUnits
、インタフェースChronoPeriod
- 定義:
- インタフェース
TemporalAmount
のgetUnits
- 戻り値:
- 年数、月数、および日数単位を含むリスト。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
- 数値オーバーフローが発生した場合、これはいずれかの単位の値がLong.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
- 定義:
- インタフェース
TemporalAmount
のaddTo
- パラメータ:
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
- 定義:
- インタフェース
TemporalAmount
のsubtractFrom
- パラメータ:
temporal
- 調整する時間的オブジェクト。null以外- 戻り値:
- 調整が行われた同じ型のオブジェクト、null以外
- 例外:
DateTimeException
- 減算できない場合ArithmeticException
- 数値のオーバーフローが発生した場合
-
equals
public boolean equals(Object obj)
この期間がもう一方の期間と等しいかどうかを確認します。この比較は、
Period
型と、3つの量のそれぞれに基づいて行われます。 等しくなるには、年数、月数、および日数単位が個々に等しい必要があります。 これは、「15か月」の期間が「1年と3か月」の期間と等しくないことを意味することに注意してください。- 定義:
equals
、インタフェースChronoPeriod
- オーバーライド:
equals
、クラスObject
- パラメータ:
obj
- チェックするオブジェクト、nullはfalseを返す- 戻り値:
- これが他の期間と等しい場合はtrue
- 関連項目:
Object.hashCode()
、HashMap
-
hashCode
public int hashCode()
この期間のハッシュ・コード。- 定義:
hashCode
、インタフェースChronoPeriod
- オーバーライド:
hashCode
、クラスObject
- 戻り値:
- 適切なハッシュ・コード
- 関連項目:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
toString
public String toString()
この期間をString
として出力します(P6Y3M1D
など)。この出力は、ISO-8601の期間フォーマットになります。 ゼロの期間は、ゼロの日数である「P0D」として表されます。
- 定義:
toString
、インタフェースChronoPeriod
- オーバーライド:
toString
、クラスObject
- 戻り値:
- この期間の文字列表現、null以外
-
-