public interface ChronoLocalDate extends Temporal, TemporalAdjuster, Comparable<ChronoLocalDate>
ほとんどのアプリケーションでは、メソッド・シグネチャ、フィールド、および変数をこのインタフェースではなく、LocalDate
として宣言してください。
ChronoLocalDate
は、Chronology chronology
または暦体系がプラガブルである場合の日付の抽象表現です。日付はTemporalField
によって表されるフィールドの形で定義され、ほとんどの一般的な実装がChronoField
に定義されます。暦は暦体系の動作と標準フィールドの意味を定義します。
LocalDate
の使用が推奨されます。この根拠について、次のドキュメントで詳しく説明します。
このインタフェースを使うべき主なユース・ケースは、汎用型パラメータ<D>
が特定の暦として完全に定義されている場合です。その場合、開発時にその暦がわかっていて、コードに指定されているものと仮定します。
暦が?として汎用型パラメータで定義されるか、または開発時に不明な場合、以下の残りの説明が適用します。
この点を強調するために、メソッド・シグネチャ、フィールド、または変数をこのインタフェース・タイプで宣言することは、初めはアプリケーションをグローバル化する賢明な方法に見えることがありますが、通常は誤ったアプローチです。そのため、LocalDate
ではなく、このインタフェースを使用することを選択することは、アプリケーション規模のアーキテクチャの決定と考えてください。
1) LocalDate
だけを使用する場合に対して、このインタフェースを使用するアプリケーションは、大幅にバグの可能性が高くなります。これは、開発時に、使用する暦体系がわからないためです。バグの主な原因は、開発者が、ISO暦体系についての日常の知識による想定を、任意の暦体系の処理を目的とするコードに適用する場合にあります。以下のセクションで、それらの想定が、どのように問題を引き起こす可能性があるのかを説明しています。この高いバグのリスクを緩和するための主なメカニズムは、強力なコード・レビュー・プロセスです。さらに、コードの存続期間中のメンテナンスにおける余分なコストも考慮すべきです。
2) このインタフェースは実装の不変性を強制しません。実装の注意事項では、すべての実装が不変でなければならないと示していますが、コードまたは型システムにはこれを強制するものがありません。したがって、ChronoLocalDate
を受け付けるように宣言されたメソッドには、不完全または悪意を持って書かれた可変の実装が渡される可能性があります。
3) このインタフェースを使用するアプリケーションは紀元の影響を考慮する必要があります。LocalDate
は、getYear()
が先発グレゴリオ暦の年を返すようにすることで、ユーザーから紀元の概念を隠しています。その決定によって、開発者はLocalDate
インスタンスを、年、月、「月の日」の3つのフィールドから構成されるものと考えることができます。これに対し、このインタフェースのユーザーは、日付を紀元、紀元年、月、および「月の日」の4つのフィールドから構成されるものとして考える必要があります。余分な紀元フィールドは、任意の暦体系の日付にきわめて重要ですが、よく忘れられます。たとえば、日本の暦体系では、紀元は天皇の在位期間を表します。ある統治期間が終了すると、次が開始し、紀元年が1にリセットされます。
4) 2つのシステム間で日付を渡す唯一の合意された国際規格は、ISO暦体系を必要とするISO-8601規格です。アプリケーション全体でこのインタフェースを使用することは、必然的にネットワークやコンポーネントの境界を越えて日付を渡す要件が発生し、アプリケーション固有のプロトコルや形式が必要になります。
5) データベースなどの長期の永続性では、ほとんど常に、ISO-8601暦体系(または関連のユリウス/グレゴリオ暦)の日付のみを受け付けます。他の暦体系間で日付を渡し合うことは、永続性との対話の複雑さが増します。
6) 下記の最後のセクションで説明するように、たいていの場合、アプリケーション全体でChronoLocalDate
を渡すことは不要です。
「月の日」を問い合わせ、その値が31を超えることはないものと想定するコードは無効です。一部の暦体系では、一部の月で31日を超えます。
日付に12か月を加算して、1年が追加されたものと想定するコードは無効です。コプト暦やエチオピア暦の13など、一部の暦体系では月数が異なります。
日付に1か月を加算して、その月値が1増加するか、または次の年にまたがるものと想定するコードは無効です。ヘブライ暦など、一部の暦体系では1年の月数がさまざまに異なります。
1か月を加算し、次に2つ目の1か月を加算して、「月の日」がその元の値に近いままであるものと想定するコードは無効です。一部の暦体系では、最長の月の長さと最短の月の長さが大きく異なります。たとえば、コプト暦やエチオピア暦では、12か月が30日で、1か月が5日です。
7日を加算して、1週間が加算されたものと想定するコードは無効です。フランス革命暦など、一部の暦体系では、7日以外の週があります。
date1
の年がdate2
の年より大きいため、date1
がdate2
より後であるものと想定するコードは無効です。これは、紀元年を参照する場合に、すべての暦体系で無効であり、特に紀元年が新しい天皇の在位期間のたびに再開される日本の暦体系にはあてはまりません。
年の開始として、月を1、「月の日」を1と処理するコードは無効です。すべての暦体系で、月の値が1の場合に年が始まるとは限りません。
一般に、日付の操作や日付の問合せでは、開発時に暦体系が不明な場合に、バグが発生する可能性が高くなります。このため、このインタフェースを使用するコードは、追加のコード・レビューが不可欠です。また、それは、このインタフェース・タイプを避けるアーキテクチャ上の決定が、通常正しい決定である理由でもあります。
LocalDate
の形で宣言します。
LocalDate
とユーザーの優先される暦体系間で変換します。
上記のように、暦体系のルールがプラガブルである場合の日付の計算の実行には、スキルが必要であり、推奨されません。幸い、任意の暦体系の日付の計算を実行する必要性はきわめてまれです。たとえば、図書館の書籍の有料貸出スキームのビジネス・ルールで、1か月の貸出が可能で、その場合の月の意味がユーザーの優先される暦体系に依存することは、ほとんどあり得ません。
任意の暦体系の日付の計算の主なユース・ケースは、表示とユーザーとの対話用に、月別のカレンダを生成することです。繰り返しますが、これはUIの問題であり、UIレイヤーの少数のメソッド内でのみこのインタフェースを使用することが、理にかなっていると考えられます。
システムの他の部分で、ISO以外の暦体系で日付を操作する必要がある場合、ユース・ケースは一般に使用する暦体系を指定します。たとえば、アプリケーションで次のイスラム暦またはヘブライ暦の休日を計算する必要があり、日付を操作する必要があるとします。このような種類のユース・ケースは次のように処理できます。
LocalDate
から開始する
LocalDate
に変換して戻す
TemporalAccessor
を使用し、読取り/書込みアクセスが必要な場合はTemporal
を使用します。
追加の暦体系をシステムに追加できます。詳細についてはChronology
を参照してください。
修飾子と型 | メソッドと説明 |
---|---|
default Temporal |
adjustInto(Temporal temporal)
指定された一時オブジェクトをこのオブジェクトと同じ日付になるように調整します。
|
default ChronoLocalDateTime<?> |
atTime(LocalTime localTime)
この日付を時間と組み合わせて、
ChronoLocalDateTime を作成します。 |
default int |
compareTo(ChronoLocalDate other)
暦を含めて、この日付を別の日付と比較します。
|
boolean |
equals(Object obj)
暦を含めて、この日付が別の日付と等しいかどうかをチェックします。
|
default String |
format(DateTimeFormatter formatter)
指定されたフォーマッタを使用してこの日付を書式設定します。
|
static ChronoLocalDate |
from(TemporalAccessor temporal)
一時オブジェクトから
ChronoLocalDate のインスタンスを取得します。 |
Chronology |
getChronology()
この日付の暦を取得します。
|
default Era |
getEra()
暦によって定義された、紀元を取得します。
|
int |
hashCode()
この日付のハッシュ・コード。
|
default boolean |
isAfter(ChronoLocalDate other)
暦を無視して、この日付が、指定された日付の後であるかどうかをチェックします。
|
default boolean |
isBefore(ChronoLocalDate other)
暦を無視して、この日付が、指定された日付の前であるかどうかをチェックします。
|
default boolean |
isEqual(ChronoLocalDate other)
暦を無視して、この日付が、指定された日付と等しいかどうかをチェックします。
|
default boolean |
isLeapYear()
暦体系によって定義されているとおりに、年がうるう年であるかどうかをチェックします。
|
default boolean |
isSupported(TemporalField field)
指定されたフィールドがサポートされているかどうかをチェックします。
|
default boolean |
isSupported(TemporalUnit unit)
指定された単位がサポートされているかどうかをチェックします。
|
int |
lengthOfMonth()
暦体系によって定義されているとおりに、この日付によって表されている月の長さを返します。
|
default int |
lengthOfYear()
暦体系によって定義されているとおりに、この日付によって表されている年の長さを返します。
|
default ChronoLocalDate |
minus(long amountToSubtract, TemporalUnit unit)
指定された期間を減算して、このオブジェクトと同じ型のオブジェクトを返します。
|
default ChronoLocalDate |
minus(TemporalAmount amount)
量を減算して、このオブジェクトと同じ型のオブジェクトを返します。
|
default ChronoLocalDate |
plus(long amountToAdd, TemporalUnit unit)
このオブジェクトと同じ型のオブジェクトに指定された期間を追加したものを返します。
|
default ChronoLocalDate |
plus(TemporalAmount amount)
このオブジェクトと同じ型のオブジェクトにある時間を追加したものを返します。
|
default <R> R |
query(TemporalQuery<R> query)
指定された問合せを使用してこの日付を問い合わせます。
|
static Comparator<ChronoLocalDate> |
timeLineOrder()
暦を無視して時系列順に
ChronoLocalDate を比較するコンパレータを取得します。 |
default long |
toEpochDay()
この日付をエポック日に変換します。
|
String |
toString()
この日付を
String として出力します。 |
ChronoPeriod |
until(ChronoLocalDate endDateExclusive)
この日付からもう一方の日付までの期間を
ChronoPeriod として計算します。 |
long |
until(Temporal endExclusive, TemporalUnit unit)
もう一方の日付までの時間量を指定された単位で計算します。
|
default ChronoLocalDate |
with(TemporalAdjuster adjuster)
調整を行って、このオブジェクトと同じ型の調整済のオブジェクトを返します。
|
default ChronoLocalDate |
with(TemporalField field, long newValue)
指定されたフィールドを変更して、このオブジェクトと同じ型のオブジェクトを返します。
|
get, getLong, range
static Comparator<ChronoLocalDate> timeLineOrder()
ChronoLocalDate
を比較するコンパレータを取得します。
このコンパレータは、基礎となる日付のみを比較し、暦を比較しない点で、compareTo(java.time.chrono.ChronoLocalDate)
での比較と異なります。これにより、異なる暦体系の日付を、ローカル時系列の日付の位置に基づいて比較できます。基礎となる比較は、エポック日の比較と同等です。
isAfter(java.time.chrono.ChronoLocalDate)
, isBefore(java.time.chrono.ChronoLocalDate)
, isEqual(java.time.chrono.ChronoLocalDate)
static ChronoLocalDate from(TemporalAccessor temporal)
ChronoLocalDate
のインスタンスを取得します。
これは、指定されたtemporal (一時)に基づいてローカル日付を取得します。TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoLocalDate
のインスタンスに変換します。
変換では、一時オブジェクトから暦と日付を抽出し、組み合わせます。この動作は、抽出された暦でChronology.date(TemporalAccessor)
を使用する場合と同等です。実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照ChronoLocalDate::from
を介して、問合せとして使用できます。
temporal
- 変換する一時オブジェクト、null以外DateTimeException
- ChronoLocalDate
に変換できない場合Chronology.date(TemporalAccessor)
Chronology getChronology()
Chronology
は使用中の暦体系を表します。ChronoField
の紀元およびその他のフィールドは暦によって定義されます。
default Era getEra()
この紀元は概念上、時系列の最大の区分です。ほとんどの暦体系には、時系列を2つの紀元に分割する1つのエポックがあります。ただし、一部には各指導者の統治期間に1つずつなど、複数の紀元があります。正確な意味はChronology
によって決定されます。
正しく実装されたすべてのEra
クラスはシングルトンであるため、date.getEra() == SomeChrono.ERA_NAME)
と書くことは有効なコードです。
このデフォルトの実装ではChronology.eraOf(int)
を使用します。
default boolean isLeapYear()
うるう年は通常より長い年です。正確な意味は、うるう年がうるう年以外の年より長いyear-lengthを暗黙的に示す必要がある制約のある暦によって決定されます。
このデフォルトの実装ではChronology.isLeapYear(long)
を使用します。
int lengthOfMonth()
これは月の長さを日数で返します。
default int lengthOfYear()
これは年の長さを日数で返します。
デフォルトの実装ではisLeapYear()
を使用し、365または366を返します。
default boolean isSupported(TemporalField field)
これは、指定されたフィールドをこの日付で問い合わせできるかどうかをチェックします。falseの場合、range
、get
、およびwith(TemporalField, long)
メソッドの呼び出しは、例外をスローします。
一連のサポートされるフィールドは、暦によって定義され、通常すべてのChronoField
日付フィールドを含みます。
フィールドがChronoField
でない場合、このメソッドの結果は、this
を引数として渡してTemporalField.isSupportedBy(TemporalAccessor)
を呼び出すことによって取得します。フィールドがサポートされているかどうかはフィールドによって決定します。
TemporalAccessor
のisSupported
field
- チェックするフィールド、nullはfalseを返すdefault boolean isSupported(TemporalUnit unit)
これは、指定された単位をこの日付に加算または減算できるかどうかをチェックします。falseの場合、plus(long, TemporalUnit)
およびminus
メソッドの呼び出しは、例外をスローします。
一連のサポートされる単位は、暦によって定義され、通常、FOREVER
を除くすべてのChronoUnit
日付単位を含みます。
単位がChronoUnit
でない場合、このメソッドの結果は、this
を引数として渡してTemporalUnit.isSupportedBy(Temporal)
を呼び出すことによって取得します。単位がサポートされているかどうかは単位によって決定します。
Temporal
のisSupported
unit
- チェックする単位、nullはfalseを返すdefault ChronoLocalDate with(TemporalAdjuster adjuster)
これは、指定されたアジャスタのルールに従って、この日付/時間を調整します。単純なアジャスタは、年フィールドなどの1つのフィールドだけを設定するなどです。複雑なアジャスタは、日付を月の最後の日に設定するなどです。一般的な調整の選択は、TemporalAdjuster
で指定します。これらには、「月の最後の日」や「次の水曜日」を見つけることが含まれます。アジャスタは、さまざまな長さの月やうるう年などの特別なケースの処理を担当します。
このメソッドを使用する方法と理由を示すいくつかのサンプル・コード:
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
Temporal
のwith
adjuster
- 使用するアジャスタ、null以外DateTimeException
- 調整を実行できない場合ArithmeticException
- 数値のオーバーフローが発生した場合default ChronoLocalDate with(TemporalField field, long newValue)
これは、指定されたフィールドの値を変更して、このオブジェクトに基づいて新しいオブジェクトを返します。たとえば、LocalDate
で、これは年、月、または「月の日」を設定するために使用できます。返されるオブジェクトはこのオブジェクトと同じ識別可能な型を持ちます。
フィールドの変更が完全には定義されていない場合もあります。たとえば、ターゲット・オブジェクトが1月31日を表す日付である場合、月を2月に変更することは不明な場合があります。このようなケースでは、フィールドは結果の解決を担当します。通常は1つ前の有効な日付が選択され、この例の場合は2月の最後の有効な日になります。
Temporal
のwith
field
- 結果に設定するフィールド、null以外newValue
- 結果のフィールドの新しい値DateTimeException
- フィールドを設定できない場合UnsupportedTemporalTypeException
- フィールドがサポートされていない場合ArithmeticException
- 数値のオーバーフローが発生した場合default ChronoLocalDate 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
を呼び出しても、同じ日付/時間が返されることは保証されません。
Temporal
のplus
amount
- 追加する量、null以外DateTimeException
- 加算できない場合ArithmeticException
- 数値のオーバーフローが発生した場合default ChronoLocalDate plus(long amountToAdd, TemporalUnit unit)
このメソッドは、指定された期間を加算して、このオブジェクトに基づいて新しいオブジェクトを返します。たとえば、LocalDate
で、これは年、月、または日の数を加算するために使用できます。返されるオブジェクトはこのオブジェクトと同じ識別可能な型を持ちます。
フィールドの変更が完全には定義されていない場合もあります。たとえば、ターゲット・オブジェクトが1月31日を表す日付である場合、1か月を加算することは不明な場合があります。このようなケースでは、フィールドは結果の解決を担当します。通常は1つ前の有効な日付が選択され、この例の場合は2月の最後の有効な日になります。
Temporal
のplus
amountToAdd
- 加算する指定された単位の量、負の場合もあるunit
- 追加する期間の単位、null以外DateTimeException
- 単位を加算できない場合ArithmeticException
- 数値のオーバーフローが発生した場合default ChronoLocalDate 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
を呼び出しても、同じ日付/時間が返されることは保証されません。
Temporal
のminus
amount
- 減算する量、null以外DateTimeException
- 減算ができない場合ArithmeticException
- 数値のオーバーフローが発生した場合default ChronoLocalDate minus(long amountToSubtract, TemporalUnit unit)
このメソッドは、指定された期間を減算して、このオブジェクトに基づいて新しいオブジェクトを返します。たとえば、LocalDate
で、これは年、月、または日の数を減算するために使用できます。返されるオブジェクトはこのオブジェクトと同じ識別可能な型を持ちます。
フィールドの変更が完全には定義されていない場合もあります。たとえば、ターゲットオブジェクトが3月31日を表す日付である場合、1か月を減算することは不明な場合があります。このようなケースでは、フィールドは結果の解決を担当します。通常は1つ前の有効な日付が選択され、この例の場合は2月の最後の有効な日になります。
Temporal
のminus
amountToSubtract
- 減算する指定された単位の量、負の場合もあるunit
- 減算する期間の単位、null以外DateTimeException
- 単位を減算できない場合UnsupportedTemporalTypeException
- 単位がサポートされていない場合ArithmeticException
- 数値のオーバーフローが発生した場合default <R> R query(TemporalQuery<R> query)
これは指定された問合せ戦略オブジェクトを使用してこの日付を問い合わせます。TemporalQuery
オブジェクトは結果を取得するために使用するロジックを定義します。このメソッドの結果を理解するには、問合せのドキュメントをお読みください。
このメソッドの結果は、this
を引数として渡して、指定した問合せでTemporalQuery.queryFrom(TemporalAccessor)
メソッドを呼び出すことによって取得します。
TemporalAccessor
のquery
R
- 結果の型query
- 呼び出す問合せ、null以外DateTimeException
- 問い合わせできない場合(問合せによって定義される)ArithmeticException
- 数値のオーバーフローが発生した場合(問合せによって定義される)default Temporal adjustInto(Temporal temporal)
これは、日付をこれと同じになるように変更して、入力と同じ識別可能な型の一時オブジェクトを返します。
調整は、ChronoField.EPOCH_DAY
をフィールドとして渡してTemporal.with(TemporalField, long)
を使用する場合と同等です。
ほとんどのケースで、Temporal.with(TemporalAdjuster)
を使用して、呼び出しパターンを逆にすると明確になります。
// these two lines are equivalent, but the second approach is recommended temporal = thisLocalDate.adjustInto(temporal); temporal = temporal.with(thisLocalDate);
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
TemporalAdjuster
のadjustInto
temporal
- 調整するターゲット・オブジェクト、null以外DateTimeException
- 調整を実行できない場合ArithmeticException
- 数値のオーバーフローが発生した場合long until(Temporal endExclusive, TemporalUnit unit)
これは、1つのTemporalUnit
の形で2つのChronoLocalDate
オブジェクト間の時間の量を計算します。開始点と終了点はthis
と指定された日付です。終了が開始より前である場合、結果は負になります。このメソッドに渡されたTemporal
はChronology.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
のこのメソッドに実装します。単位DAYS
、WEEKS
、MONTHS
、YEARS
、DECADES
、CENTURIES
、MILLENNIA
、およびERAS
はすべての実装でサポートしてください。その他のChronoUnit
値は例外をスローします。
単位がChronoUnit
でない場合、このメソッドの結果は、this
を1つ目の引数として、変換される入力temporal (一時)を2つ目の引数として渡してTemporalUnit.between(Temporal, Temporal)
を呼び出すことによって取得します。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
Temporal
のuntil
endExclusive
- 終了日、排他的、同じ暦でChronoLocalDate
に変換される、null以外unit
- 量を測定する単位、null以外DateTimeException
- 量を計算できない場合や、終了temporal (一時)をChronoLocalDate
に変換できない場合UnsupportedTemporalTypeException
- 単位がサポートされていない場合ArithmeticException
- 数値のオーバーフローが発生した場合ChronoPeriod until(ChronoLocalDate endDateExclusive)
ChronoPeriod
として計算します。
これは2つの日付間の期間を計算します。提供されたすべての暦で、年、月、日を使用して期間が計算されますが、ChronoPeriod
APIでは、他の単位を使用して期間を表現できます。
開始点と終了点はthis
と指定された日付です。終了が開始より前である場合、結果は負になります。マイナス記号は年、月、日のそれぞれで同じになります。
計算はこの日付の暦を使用して実行されます。必要に応じて、入力日が一致するように変換されます。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
endDateExclusive
- 終了日、排他的、任意の暦で可能、null以外DateTimeException
- 期間を計算できない場合ArithmeticException
- 数値のオーバーフローが発生した場合default String format(DateTimeFormatter formatter)
この日付はフォーマッタに渡され、文字列が生成されます。
デフォルトの実装は次のように動作する必要があります。
return formatter.format(this);
formatter
- 使用するフォーマッタ、null以外DateTimeException
- 出力時にエラーが発生した場合default ChronoLocalDateTime<?> atTime(LocalTime localTime)
ChronoLocalDateTime
を作成します。
これは、指定された時間でこの日付から形成されたChronoLocalDateTime
を返します。日付と時間のすべての可能性のある組合わせが有効です。
localTime
- 使用するローカル時間、null以外default long toEpochDay()
Epoch Day count
は日の単純な増分カウントで、日0は1970-01-01 (ISO)です。この定義は、すべての暦で同じであり、変換が可能です。
このデフォルトの実装は、EPOCH_DAY
フィールドを問い合わせます。
default int compareTo(ChronoLocalDate other)
比較は、まず基礎となる時系列の日付に基づき、次に暦に基づきます。Comparable
に定義されているとおりに、「equalsと一致」しています。
たとえば、以下はコンパレータの順序です。
2012-12-03 (ISO)
2012-12-04 (ISO)
2555-12-04 (ThaiBuddhist)
2012-12-05 (ISO)
比較対象のすべての日付オブジェクトが同じ暦にある場合、追加の暦ステージは必要なく、ローカル日付のみが使用されます。2つの異なる暦の日付など、2つのTemporalAccessor
インスタンスの日付を比較するには、コンパレータとしてChronoField.EPOCH_DAY
を使用します。
このデフォルトの実装は、上で定義されている比較を実行します。
Comparable<ChronoLocalDate>
のcompareTo
other
- 比較する他方の日付、null以外default boolean isAfter(ChronoLocalDate other)
このメソッドは、基礎となる日付のみを比較し、暦を比較しない点で、compareTo(java.time.chrono.ChronoLocalDate)
での比較と異なります。これにより、異なる暦体系の日付を、時系列の位置に基づいて比較できます。これは、date1.toEpochDay() > date2.toEpochDay()
を使用する場合と同等です。
このデフォルトの実装は、エポック日に基づいて比較を実行します。
other
- 比較する他方の日付、null以外default boolean isBefore(ChronoLocalDate other)
このメソッドは、基礎となる日付のみを比較し、暦を比較しない点で、compareTo(java.time.chrono.ChronoLocalDate)
での比較と異なります。これにより、異なる暦体系の日付を、時系列の位置に基づいて比較できます。これは、date1.toEpochDay() < date2.toEpochDay()
を使用する場合と同等です。
このデフォルトの実装は、エポック日に基づいて比較を実行します。
other
- 比較する他方の日付、null以外default boolean isEqual(ChronoLocalDate other)
このメソッドは、基礎となる日付のみを比較し、暦を比較しない点で、compareTo(java.time.chrono.ChronoLocalDate)
での比較と異なります。これにより、異なる暦体系の日付を、時系列の位置に基づいて比較できます。これは、date1.toEpochDay() == date2.toEpochDay()
を使用する場合と同等です。
このデフォルトの実装は、エポック日に基づいて比較を実行します。
other
- 比較する他方の日付、null以外boolean equals(Object obj)
この日付を別の日付と比較して、日付と暦が同じであることを確認します。
2つの異なる暦の日付など、2つのTemporalAccessor
インスタンスの日付を比較するには、コンパレータとしてChronoField.EPOCH_DAY
を使用します。
equals
、クラス: Object
obj
- チェックするオブジェクト、nullはfalseを返すObject.hashCode()
、HashMap
int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.