public interface Chronology extends Comparable<Chronology>
メインの日付と時間APIはISO暦体系に基づいて構築されています。 暦(chronology)は背後で動作し、暦体系の一般概念を表します。 たとえば、和暦、民国暦、タイ仏暦などです。
その他の大半の暦体系は、地球が太陽の周りを回り、月が地球の周りを回るサイクルに結び付けられた、年、月、日の共通の概念でも運用されています。 これらの共通の概念は、ChronoField
で定義され、すべてのChronology
の実装で使用できます。
LocalDate isoDate = ... ThaiBuddhistDate thaiDate = ... int isoYear = isoDate.get(ChronoField.YEAR); int thaiYear = thaiDate.get(ChronoField.YEAR);ここに示すように、日付オブジェクトは異なる暦体系にあり、異なる
Chronology
インスタンスによって表されていますが、どちらもChronoField
の同じ定数を使用して、問い合わせることができます。 この意味の詳細については、ChronoLocalDate
を参照してください。 一般に、アドバイスは、ChronoLocalDate
ではなく、既知のISOベースのLocalDate
を使用することです。
Chronology
オブジェクトは一般にChronoField
を使用し、日付の紀元、紀元の年、年の月、「月の日」モデルに基づきます。 Chronology
インスタンスは、マヤ暦など、まったく異なる種類の暦体系を表すことができます。
実際的な観点から、Chronology
インスタンスはファクトリとしても機能します。 of(String)
メソッドではインスタンスを識別子で検索できますが、ofLocale(Locale)
メソッドではロケールで検索できます。
Chronology
インスタンスは、ChronoLocalDate
インスタンスを作成するための一連のメソッドを提供します。 日付クラスは、特定の日付を操作するために使用します。
dateNow()
dateNow(clock)
dateNow(zone)
date(yearProleptic, month, day)
date(era, yearOfEra, month, day)
dateYearDay(yearProleptic, dayOfYear)
dateYearDay(era, yearOfEra, dayOfYear)
date(TemporalAccessor)
Chronology
、ChronoLocalDate
、およびEra
の実装を書く必要があります。 暦体系に固有のロジックの大半は、ChronoLocalDate
実装にあります。 Chronology
実装はファクトリとして機能します。
追加の暦の検出を許可するには、ServiceLoader
を使用します。 実装クラスを一覧表示したファイルを「java.time.chrono.Chronology」という名前で、META-INF/services
ディレクトリに追加する必要があります。 サービスのロードの詳細については、ServiceLoaderを参照してください。 idまたはcalendarTypeによる検索では、最初に暦を提供したシステムが見つかり、次に暦を提供したアプリケーションが続きます。
各暦では、システム内で一意の暦IDを定義する必要があります。 暦がCLDR仕様で定義された暦体系を表す場合、カレンダ・タイプはCLDRのタイプと、該当する場合、CLDRのバリアントの連結になります。
修飾子と型 | メソッド | 説明 |
---|---|---|
int |
compareTo(Chronology other) |
この暦を別の暦と比較します。
|
default ChronoLocalDate |
date(Era era, int yearOfEra, int month, int dayOfMonth) |
紀元、紀元年、月、および「月の日」フィールドから、この暦のローカル日付を取得します。
|
ChronoLocalDate |
date(int prolepticYear, int month, int dayOfMonth) |
先発暦の年、月、および「月の日」フィールドから、この暦のローカル日付を取得します。
|
ChronoLocalDate |
date(TemporalAccessor temporal) |
別の時間的オブジェクトから、この暦のローカル日付を取得します。
|
ChronoLocalDate |
dateEpochDay(long epochDay) |
エポック日から、この暦のローカル日付を取得します。
|
default ChronoLocalDate |
dateNow() |
デフォルトのタイムゾーンのシステム・クロックからこの暦の現在のローカル日付を取得します。
|
default ChronoLocalDate |
dateNow(Clock clock) |
指定されたクロックからこの暦の現在のローカル日付を取得します。
|
default ChronoLocalDate |
dateNow(ZoneId zone) |
指定されたタイムゾーンのシステム・クロックからこの暦の現在のローカル日付を取得します。
|
default ChronoLocalDate |
dateYearDay(Era era, int yearOfEra, int dayOfYear) |
紀元、紀元年、「年の日」フィールドから、この暦のローカル日付を取得します。
|
ChronoLocalDate |
dateYearDay(int prolepticYear, int dayOfYear) |
先発暦の年および「年の日」フィールドから、この暦のローカル日付を取得します。
|
boolean |
equals(Object obj) |
この暦が別の暦と等しいかどうかをチェックします。
|
Era |
eraOf(int eraValue) |
数値から、暦の紀元オブジェクトを作成します。
|
List<Era> |
eras() |
暦の紀元のリストを取得します。
|
static Chronology |
from(TemporalAccessor temporal) |
時間的オブジェクトから
Chronology のインスタンスを取得します。 |
static Set<Chronology> |
getAvailableChronologies() |
使用可能な暦を返します。
|
String |
getCalendarType() |
暦体系のカレンダ・タイプを取得します。
|
default String |
getDisplayName(TextStyle style, Locale locale) |
この暦のテキスト表現を取得します。
|
String |
getId() |
暦のIDを取得します。
|
int |
hashCode() |
この暦のハッシュ・コード。
|
boolean |
isLeapYear(long prolepticYear) |
指定された年がうるう年であるかどうかをチェックします。
|
default ChronoLocalDateTime<? extends ChronoLocalDate> |
localDateTime(TemporalAccessor temporal) |
別の時間的オブジェクトから、この暦のローカル日付/時間を取得します。
|
static Chronology |
of(String id) |
暦IDまたは暦体系タイプから
Chronology のインスタンスを取得します。 |
static Chronology |
ofLocale(Locale locale) |
ロケールから
Chronology のインスタンスを取得します。 |
default ChronoPeriod |
period(int years, int months, int days) |
この暦の期間を年、月および日に基づいて取得します。
|
int |
prolepticYear(Era era, int yearOfEra) |
紀元と紀元年を指定して先発暦の年を計算します。
|
ValueRange |
range(ChronoField field) |
指定されたフィールドの有効な値の範囲を取得します。
|
ChronoLocalDate |
resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle) |
解析された
ChronoField の値を解析時の日付に解決します。 |
String |
toString() |
この暦を
String として出力します。 |
default ChronoZonedDateTime<? extends ChronoLocalDate> |
zonedDateTime(Instant instant, ZoneId zone) |
Instant からこの暦でChronoZonedDateTime を取得します。 |
default ChronoZonedDateTime<? extends ChronoLocalDate> |
zonedDateTime(TemporalAccessor temporal) |
もう一方のtemporal (一時)オブジェクトからこの暦で
ChronoZonedDateTime を取得します。 |
static Chronology from(TemporalAccessor temporal)
Chronology
のインスタンスを取得します。
これは、指定された時間的オブジェクトに基づいて暦を取得します。 TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronology
のインスタンスに変換します。
この変換では、TemporalQueries.chronology()
を使用して暦を取得します。 指定された時間的オブジェクトに暦がない場合、IsoChronology
が返されます。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照Chronology::from
を介して、問合せとして使用できます。
temporal
- 変換する時間的オブジェクト、null以外DateTimeException
- Chronology
に変換できない場合static Chronology ofLocale(Locale locale)
Chronology
のインスタンスを取得します。
これは、指定されたロケールに基づいて、Chronology
を返し、一般にIsoChronology
を返します。 その他の暦体系は、それらがロケール内で明示的に選択されている場合にのみ返されます。
Locale
クラスは、アプリケーションのローカライズに役立つ幅広い情報へのアクセスを提供します。 これには、英国で使用されている英語の場合の「en-GB」など、言語とリージョンが含まれます。
Locale
クラスは、暦体系の識別に使用できる拡張メカニズムもサポートしています。 このメカニズムはキーと値のペアの形式で、ここでの暦体系のキーは「ca」です。 たとえば、ロケール「en-JP-u-ca-japanese」は日本で日本の暦体系で使用される英語を表します。
このメソッドは、Locale.getUnicodeLocaleType(String)
に「ca」を渡す場合と等しい方法で、目的の暦体系を見つけます。 「ca」キーが存在しない場合、IsoChronology
が返されます。
このメソッドの動作は古いCalendar.getInstance(Locale)
メソッドと異なることに注意してください。 そのメソッドが「th_TH」のロケールを受け取った場合、BuddhistCalendar
を返します。 これに対し、このメソッドはIsoChronology
を返します。 いずれかのメソッドにロケール「th-TH-u-ca-buddhist」を渡すと、結果はタイ仏暦になるため、タイの暦体系のローカライズの場合に進める推奨されるアプローチです。
和暦体系でも同様の、ただしより単純な状況が発生します。 以前は暦にアクセスするために、ロケール「jp_JP_JP」が使用されていました。 ただし、タイのロケールと異なり、「ja_JP_JP」はLocale
によって自動的に現代の推奨される形式の「ja-JP-u-ca-japanese」に変換されます。 そのため、このメソッドとCalendar#getInstance(Locale)
の動作に違いはありません。
locale
- 暦体系を取得するために使用するロケール、null以外DateTimeException
- ロケールで指定された暦が見つからなかった場合static Chronology of(String id)
Chronology
のインスタンスを取得します。
これは、IDまたはタイプに基づいて暦を取得します。 chronology ID
は暦を一意に識別します。 calendar system type
はCLDR仕様で定義されます。
暦は、システムの暦またはアプリケーションによって、ServiceLoader構成から提供された暦です。
一部の暦はカスタマイズ可能であるため、IDまたはタイプは一般にデフォルトのカスタマイズを表します。 たとえば、グレゴリオ暦では、ユリウス暦から複数の切換え日を指定できますが、検索では、デフォルトの切換え日のみが提供されます。
id
- 暦IDまたは暦体系のタイプ、null以外DateTimeException
- 暦が見つからない場合static Set<Chronology> getAvailableChronologies()
返される各Chronology
は、システムで使用できます。 一連の暦には、システムの暦およびアプリケーションによって、ServiceLoader構成から提供された暦が含まれます。
String getId()
このIDはChronology
を一意に識別します。 これは、of(String)
を使用して、Chronology
を検索するために使用できます。
getCalendarType()
String getCalendarType()
カレンダ・タイプはCLDRとUnicode Locale Data Markup Language (LDML)の仕様によって定義された識別子で、暦を一意に識別します。 getCalendarType
は、CLDRカレンダ・タイプとバリアントの連結で、該当する場合、バリアントが「-」で区切られて追加されます。 カレンダ・タイプは、of(String)
を使用して、Chronology
を検索するために使用されます。
getId()
default ChronoLocalDate date(Era era, int yearOfEra, int month, int dayOfMonth)
date(int, int, int)
を呼び出す前に、紀元と紀元の年を先発暦の年に組み合わせます。era
- 暦の正しいタイプの紀元、null以外yearOfEra
- 暦の紀元の年month
- 暦の年の月dayOfMonth
- 暦の「月の日」DateTimeException
- 日付を作成できない場合ClassCastException
- era
が暦に対して正しいタイプでない場合ChronoLocalDate date(int prolepticYear, int month, int dayOfMonth)
prolepticYear
- 暦の先発暦の年month
- 暦の年の月dayOfMonth
- 暦の「月の日」DateTimeException
- 日付を作成できない場合default ChronoLocalDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
dateYearDay(int, int)
を呼び出す前に、紀元と紀元の年を先発暦の年に組み合わせます。era
- 暦の正しいタイプの紀元、null以外yearOfEra
- 暦の紀元の年dayOfYear
- 暦の年の月DateTimeException
- 日付を作成できない場合ClassCastException
- era
が暦に対して正しいタイプでない場合ChronoLocalDate dateYearDay(int prolepticYear, int dayOfYear)
prolepticYear
- 暦の先発暦の年dayOfYear
- 暦の年の月DateTimeException
- 日付を作成できない場合ChronoLocalDate dateEpochDay(long epochDay)
EPOCH_DAY
の定義は、すべての暦体系で同じであるため、変換で使用できます。
epochDay
- エポック日DateTimeException
- 日付を作成できない場合default ChronoLocalDate dateNow()
これは、デフォルトのタイムゾーンのsystem clock
を問い合わせ、現在の日付を取得します。
このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。
dateNow(Clock)
を呼び出します。DateTimeException
- 日付を作成できない場合default ChronoLocalDate dateNow(ZoneId zone)
これはsystem clock
を問い合わせて、現在の日付を取得します。 タイムゾーンを指定すると、デフォルトのタイムゾーンへの依存を避けられます。
このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。
dateNow(Clock)
を呼び出します。zone
- 使用するゾーンID、null以外DateTimeException
- 日付を作成できない場合default ChronoLocalDate dateNow(Clock clock)
これは指定されたクロックを問い合わせ、現在の日付(今日)を取得します。 このメソッドを使用すると、テストに代替のクロックを使用できます。 代替のクロックはdependency injection
を使用して導入できます。
date(TemporalAccessor)
を呼び出します。clock
- 使用するクロック、null以外DateTimeException
- 日付を作成できない場合ChronoLocalDate date(TemporalAccessor temporal)
これは、指定された時間的オブジェクトに基づいてこの暦での日付を取得します。 TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoLocalDate
のインスタンスに変換します。
変換では一般に、暦体系全体で標準化されたEPOCH_DAY
フィールドを使用します。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::date
を介して、問合せとして使用できます。
temporal
- 変換する一時オブジェクト、null以外DateTimeException
- 日付を作成できない場合ChronoLocalDate.from(TemporalAccessor)
default ChronoLocalDateTime<? extends ChronoLocalDate> localDateTime(TemporalAccessor temporal)
これは、指定された時間的オブジェクトに基づいてこの暦での日付/時間を取得します。 TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoLocalDateTime
のインスタンスに変換します。
変換では、時間的オブジェクトからChronoLocalDate
とLocalTime
を抽出し、組み合わせます。 実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。 結果ではこの暦を使用します。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::localDateTime
を介して、問合せとして使用できます。
temporal
- 変換する一時オブジェクト、null以外DateTimeException
- 日付/時間を作成できない場合ChronoLocalDateTime.from(TemporalAccessor)
default ChronoZonedDateTime<? extends ChronoLocalDate> zonedDateTime(TemporalAccessor temporal)
ChronoZonedDateTime
を取得します。
これは、指定された時間的オブジェクトに基づいてこの暦でのゾーン付きの日付/時間を取得します。 TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoZonedDateTime
のインスタンスに変換します。
変換では、まず時間的オブジェクトからZoneId
を取得し、必要に応じて、ZoneOffset
を使用します。 次に、Instant
を取得しようとし、必要に応じて、ChronoLocalDateTime
を使用します。 結果はZoneId
またはZoneOffset
とInstant
またはChronoLocalDateTime
のいずれかの組み合わせです。 実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。 結果ではこの暦を使用します。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::zonedDateTime
を介して、問合せとして使用できます。
temporal
- 変換する一時オブジェクト、null以外DateTimeException
- 日付/時間を作成できない場合ChronoZonedDateTime.from(TemporalAccessor)
default ChronoZonedDateTime<? extends ChronoLocalDate> zonedDateTime(Instant instant, ZoneId zone)
Instant
からこの暦でChronoZonedDateTime
を取得します。
これは、指定された同じインスタントで、ゾーン付きの日付/時間を取得します。
instant
- 日付/時間の作成元のインスタント、null以外zone
- タイムゾーン、null以外DateTimeException
- 結果がサポートされている範囲を超える場合boolean isLeapYear(long prolepticYear)
うるう年は通常より長い年です。 正確な意味は、次の制約に従って、暦によって決定されます。
prolepticYear
- チェックする先発暦の年、範囲が検証されないint prolepticYear(Era era, int yearOfEra)
これは紀元と紀元の年を単一の先発暦の年フィールドに組み合わせます。
JapaneseChronology
など、暦で紀元が頻繁に使われている場合、紀元の年が紀元に照らして検証されます。 他の暦の場合、検証はオプションです。
era
- 暦の正しいタイプの紀元、null以外yearOfEra
- 暦の紀元の年DateTimeException
- 年がその紀元に無効である場合など、先発暦の年に変換できない場合ClassCastException
- era
が暦に対して正しいタイプでない場合Era eraOf(int eraValue)
この紀元は概念上、時系列の最大の区分です。 ほとんどの暦体系には、時系列を2つの紀元に分割する1つのエポックがあります。 ただし、一部には各指導者の統治期間に1つずつなど、複数の紀元があります。 正確な意味は、次の制約に従って、暦によって決定されます。
1970-01-01で使用する紀元は値が1である必要があります。 以降の紀元は、値が順に大きくなる必要があります。 以前の紀元は、値が順に小さくなる必要があります。 各暦は列挙または類似のシングルトンを参照して、紀元の値を提供する必要があります。
このメソッドは、指定された紀元の値に対して、正しいタイプのシングルトンの紀元を返します。
eraValue
- 紀元の値DateTimeException
- 紀元を作成できない場合List<Era> eras()
ほとんどの暦体系には、その中で年が意味を持つ紀元があります。 暦体系が紀元の概念をサポートしていない場合、空のリストを返す必要があります。
ValueRange range(ChronoField field)
すべてのフィールドはlong
整数で表現できます。 このメソッドは、その値の有効範囲を記述するオブジェクトを返します。
結果は有効な最小値と最大値を記述しているだけなので、それらを深く解釈しすぎないことが重要です。 たとえば、範囲内の値であっても、フィールドに対して無効な場合があります。
このメソッドは、暦でフィールドをサポートしているかどうかに関係なく、結果を返します。
field
- 範囲を取得するフィールド、null以外DateTimeException
- フィールドの範囲を取得できない場合default String getDisplayName(TextStyle style, Locale locale)
これは、暦の識別に使用され、ユーザーへの表示に適したテキストの名前を返します。 パラメータは返されるテキストとロケールのスタイルを制御します。
style
- 必要なテキストのスタイル、null以外locale
- 使用するロケール。null以外ChronoLocalDate resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
ChronoField
の値を解析時の日付に解決します。
ほとんどのTemporalField
実装は、フィールド上の解決メソッドを使用して解決されます。 これに対し、ChronoField
クラスは暦に関連する意味のみを持つフィールドを定義します。 そのため、ChronoField
日付フィールドは、ここで特定の暦のコンテキストで解決されます。
一般的な解決動作を説明するデフォルトの実装は、AbstractChronology
に提供されています。
fieldValues
- フィールドと値のマップ、更新可能、null以外resolverStyle
- 要求された解決のタイプ、null以外DateTimeException
- 一般に入力データの競合のため、日付を解決できない場合default ChronoPeriod period(int years, int months, int days)
これは、指定された年、月、日を使用して、この暦に関連付けられた期間を返します。 提供されたすべての暦で、年、月、日に基づいて期間が使用されますが、ChronoPeriod
APIでは、他の単位を使用して期間を表現できます。
range(ChronoField)
から1年の月数を取得します。 1年の月数が固定である場合、加算、減算、正規化の計算アプローチはやや異なります。
年、月、および日に基づかない通常と異なる暦体系を実装するか、または直接制御したい場合、ChronoPeriod
インタフェースを直接実装する必要があります。
返される期間は不変で、スレッドセーフである必要があります。
years
- 年数、負の場合もあるmonths
- 年数、負の場合もあるdays
- 年数、負の場合もあるint compareTo(Chronology other)
最初に暦ID文字列、次にサブクラスに固有の任意の追加の情報による比較の順序。 Comparable
に定義されているとおりに、「equalsと一致」しています。
Comparable<Chronology>
のcompareTo
other
- 他の比較する暦、null以外boolean equals(Object obj)
比較はオブジェクトの全体の状態に基づきます。
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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。