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

インタフェースChronology

すべてのスーパー・インタフェース:
Comparable<Chronology>
既知のすべての実装クラス:
AbstractChronology, HijrahChronology, IsoChronology, JapaneseChronology, MinguoChronology, ThaiBuddhistChronology

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インスタンスを作成するための一連のメソッドを提供します。 日付クラスは、特定の日付を操作するために使用します。

新しい暦の追加

一連の使用可能な暦はアプリケーションによって拡張できます。 新しい暦体系を追加するには、ChronologyChronoLocalDate、およびEraの実装を書く必要があります。 暦体系に固有のロジックの大半は、ChronoLocalDate実装にあります。 Chronology実装はファクトリとして機能します。

追加の暦の検出を許可するには、ServiceLoaderを使用します。 実装クラスを一覧表示したファイルを「java.time.chrono.Chronology」という名前で、META-INF/servicesディレクトリに追加する必要があります。 サービスのロードの詳細については、ServiceLoaderを参照してください。 idまたはcalendarTypeによる検索では、最初に暦を提供したシステムが見つかり、次に暦を提供したアプリケーションが続きます。

各暦では、システム内で一意の暦IDを定義する必要があります。 時系列がCLDR仕様で定義されたカレンダ・システムを表す場合、カレンダ・タイプはCLDRタイプの連結、および該当する場合はCLDRバリアントです。

実装要件:
このインタフェースは、他のクラスが正常に動作するように、注意して実装する必要があります。 インスタンス化可能なすべての実装は、最終、不変、およびスレッドセーフである必要があります。 サブクラスは、可能であれば直列化可能にしてください。
導入されたバージョン:
1.8