モジュール 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
関連項目: