- すべての実装されたインタフェース:
Serializable
,Comparable<Chronology>
,Chronology
HijrahChronologyはヒジュラ暦体系のルールに従います。 ヒジュラ暦は、新月が発生したと判断されるタイミングと観察が行われた場所の違いに基づいて、いくつかのバリアントがあります。 一部のバリアントでは、各月の長さが月と地球の天文学データからアルゴリズムで計算され、他のバリアントでは、月の長さが、承認された新月の観測によって決定されます。 アルゴリズムに基づいた暦の場合、暦は未来まで予測することができます。 観測に基づいた暦の場合は、過去の観測からの履歴データのみを使用できます。
各月の長さは29日または30日です。 通常の年は354日で、うるう年は355日です。
CLDRとLDMLでバリアントを識別します。
暦ID | カレンダ・タイプ | ロケール拡張子、Locale を参照 |
説明 |
---|---|---|---|
Hijrah-umalqura | islamic-umalqura | ca-islamic-umalqura | イスラム暦 - サウジ・アラビアのウム・アルクラ暦 |
追加のバリアントはChronology.getAvailableChronologies()
から使用できます。
例
ロケールからの暦の選択では、Chronology.ofLocale(java.util.Locale)
を使用して、ロケールでサポートされているBCP 47拡張メカニズムに基づいて、暦を見つけ、特定の暦(ca)を要求します。 たとえば、
Locale locale = Locale.forLanguageTag("en-US-u-ca-islamic-umalqura"); Chronology chrono = Chronology.ofLocale(locale);
- 実装要件:
- このクラスは不変でスレッドセーフです。
- 実装上のノート:
- ヒジュラ暦の各バリアントは個別に構成されます。 各バリアントは、
ID
、calendar type
、暦の開始、ISO暦との調整、一定の範囲の年の各月の長さを定義するプロパティ・リソースによって定義されます。 変種は、hijrah-config-<calendar type>.propertiesのリソースとしてHijrahChronologyによってロードされます。ヒジュラ暦のプロパティ・リソースは暦を記述する一連のプロパティです。 構文は
java.util.Properties#load(Reader)
によって定義されます。プロパティ名 プロパティ値 説明 id 暦ID、たとえば、Hijrah-umalqura 一般的な使用方法での暦のID type カレンダ・タイプ、たとえば、islamic-umalqura LDMLはカレンダ・タイプを定義します バージョン バージョン、たとえば: 1.8.0_1 ヒジュラ暦のバリアントのバージョン・データ iso-start yyyy-MM-dd
で書式設定されたISO開始日、たとえば: 1900-04-30ヒジュラ暦の最小の年の初日のISO日付。 yyyy - 4桁の数値の年、たとえば1434 値は12か月の長さのシーケンス、たとえば: 29 30 29 30 29 30 30 30 29 30 29 29 空白で区切られた年の12か月の長さ。 ギャップなくすべての年について、数値の年プロパティが存在する必要があります。 月の長さは29-32 (この値を含む)の間である必要があります。 <JAVA_HOME>/conf/chronology
ディレクトリに構成プロパティ・ファイルを指定することで、バリアントを追加できます。 プロパティ・ファイルは、hijrah-config-<chronology id>_<calendar type>.properties
のネーミング規則に従う必要があります。 - 導入されたバージョン:
- 1.8
- 関連項目:
-
フィールドのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明date
(int prolepticYear, int month, int dayOfMonth) 先発暦の年、年の月、および「月の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。紀元、紀元年、月、および「月の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。date
(TemporalAccessor temporal) 別の時間的オブジェクトから、この暦のローカル日付を取得します。dateEpochDay
(long epochDay) エポック日から、ヒジュラ暦体系のローカル日付を取得します。dateNow()
デフォルトのタイムゾーンのシステム・クロックからこの暦の現在のローカル日付を取得します。指定されたクロックからこの暦の現在のローカル日付を取得します。指定されたタイムゾーンのシステム・クロックからこの暦の現在のローカル日付を取得します。dateYearDay
(int prolepticYear, int dayOfYear) 先発暦の年および「年の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。dateYearDay
(Era era, int yearOfEra, int dayOfYear) 紀元、紀元年、および「年の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。eraOf
(int eraValue) 数値からHijrahEraオブジェクトを作成します。eras()
暦の紀元のリストを取得します。イスラム暦のカレンダ・タイプを取得します。getId()
暦のIDを取得します。boolean
isLeapYear
(long prolepticYear) 指定された年がうるう年であるかどうかをチェックします。localDateTime
(TemporalAccessor temporal) 別の時間的オブジェクトから、この暦のローカル日付/時間を取得します。int
prolepticYear
(Era era, int yearOfEra) 紀元と紀元年を指定して先発暦の年を計算します。range
(ChronoField field) 指定されたフィールドの有効な値の範囲を取得します。resolveDate
(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle) 解析されたChronoField
の値を解析時の日付に解決します。zonedDateTime
(Instant instant, ZoneId zone) Instant
からこの暦でChronoZonedDateTime
を取得します。zonedDateTime
(TemporalAccessor temporal) もう一方のtemporal (一時)オブジェクトからこの暦でChronoZonedDateTime
を取得します。クラス java.time.chrono.AbstractChronologyで宣言されたメソッド
compareTo, equals, hashCode, toString
インタフェース java.time.chrono.Chronologyで宣言されたメソッド
epochSecond, epochSecond, getDisplayName, period
-
フィールド詳細
-
INSTANCE
public static final HijrahChronology INSTANCEサウジ・アラビアのイスラム・ウム・アルクラ暦のシングルトン・インスタンス。 その他のヒジュラ暦のバリアントはChronology.getAvailableChronologies()
から使用できる場合があります。
-
-
メソッドの詳細
-
getId
public String getId()暦のIDを取得します。このIDは
Chronology
を一意に識別します。 これは、Chronology.of(String)
を使用して、Chronology
を検索するために使用できます。- 定義:
- インタフェース
Chronology
のgetId
- 戻り値:
- 暦ID、null以外
- 関連項目:
-
getCalendarType
public String getCalendarType()イスラム暦のカレンダ・タイプを取得します。カレンダ・タイプはUnicode Locale Data Markup Language (LDML)の仕様によって定義された識別子です。 これは、
Chronology.of(String)
を使用して、Chronology
を検索するために使用できます。- 定義:
- インタフェース
Chronology
のgetCalendarType
- 戻り値:
- 暦体系のタイプ、暦が標準タイプでない場合はnull以外、それ以外の場合はnull
- 関連項目:
-
date
public HijrahDate date(Era era, int yearOfEra, int month, int dayOfMonth) 紀元、紀元年、月、および「月の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。- 定義:
- インタフェース
Chronology
のdate
- パラメータ:
era
- ヒジュラ暦の紀元、null以外yearOfEra
- 紀元の年month
- 年の月dayOfMonth
- 「月の日」- 戻り値:
- ヒジュラ暦のローカル日付、null以外
- 例外:
DateTimeException
- 日付を作成できない場合ClassCastException
-era
がHijrahEra
でない場合
-
date
public HijrahDate date(int prolepticYear, int month, int dayOfMonth) 先発暦の年、年の月、および「月の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。- 定義:
- インタフェース
Chronology
のdate
- パラメータ:
prolepticYear
- 先発暦の年month
- 年の月dayOfMonth
- 「月の日」- 戻り値:
- ヒジュラ暦のローカル日付、null以外
- 例外:
DateTimeException
- 日付を作成できない場合
-
dateYearDay
public HijrahDate dateYearDay(Era era, int yearOfEra, int dayOfYear) 紀元、紀元年、および「年の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。- 定義:
- インタフェース
Chronology
のdateYearDay
- パラメータ:
era
- ヒジュラ暦の紀元、null以外yearOfEra
- 紀元の年dayOfYear
- 「年の日」- 戻り値:
- ヒジュラ暦のローカル日付、null以外
- 例外:
DateTimeException
- 日付を作成できない場合ClassCastException
-era
がHijrahEra
でない場合
-
dateYearDay
public HijrahDate dateYearDay(int prolepticYear, int dayOfYear) 先発暦の年および「年の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。- 定義:
- インタフェース
Chronology
のdateYearDay
- パラメータ:
prolepticYear
- 先発暦の年dayOfYear
- 「年の日」- 戻り値:
- ヒジュラ暦のローカル日付、null以外
- 例外:
DateTimeException
- 年の値が範囲外である場合、または年に対して「年の日」が無効である場合
-
dateEpochDay
public HijrahDate dateEpochDay(long epochDay) エポック日から、ヒジュラ暦体系のローカル日付を取得します。- 定義:
- インタフェース
Chronology
のdateEpochDay
- パラメータ:
epochDay
- エポック日- 戻り値:
- ヒジュラ暦のローカル日付、null以外
- 例外:
DateTimeException
- 日付を作成できない場合
-
dateNow
public HijrahDate dateNow()次のインタフェースからコピーされた説明:Chronology
デフォルトのタイムゾーンのシステム・クロックからこの暦の現在のローカル日付を取得します。これは、デフォルトのタイムゾーンの
system clock
を問い合わせ、現在の日付を取得します。このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。
- 定義:
- インタフェース
Chronology
のdateNow
- 戻り値:
- システムクロックとデフォルトのタイムゾーンを使用した現在のローカル日付、null以外
-
dateNow
public HijrahDate dateNow(ZoneId zone) 次のインタフェースからコピーされた説明:Chronology
指定されたタイムゾーンのシステム・クロックからこの暦の現在のローカル日付を取得します。これは
system clock
を問い合わせて、現在の日付を取得します。 タイムゾーンを指定すると、デフォルトのタイムゾーンへの依存を避けられます。このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。
- 定義:
- インタフェース
Chronology
のdateNow
- パラメータ:
zone
- 使用するゾーンID、null以外- 戻り値:
- システムクロックを使用した現在のローカル日付、null以外
-
dateNow
public HijrahDate dateNow(Clock clock) 次のインタフェースからコピーされた説明:Chronology
指定されたクロックからこの暦の現在のローカル日付を取得します。これは指定されたクロックを問い合わせ、現在の日付(今日)を取得します。 このメソッドを使用すると、テストに代替のクロックを使用できます。 代替のクロックは
dependency injection
を使用して導入できます。- 定義:
- インタフェース
Chronology
のdateNow
- パラメータ:
clock
- 使用するクロック、null以外- 戻り値:
- 現在のローカル日付、null以外
-
date
public HijrahDate date(TemporalAccessor temporal) 次のインタフェースからコピーされた説明:Chronology
別の時間的オブジェクトから、この暦のローカル日付を取得します。これは、指定された時間的オブジェクトに基づいてこの暦での日付を取得します。
TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoLocalDate
のインスタンスに変換します。変換では一般に、暦体系全体で標準化された
EPOCH_DAY
フィールドを使用します。このメソッドは関数型インタフェース
TemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::date
を介して、問合せとして使用できます。- 定義:
- インタフェース
Chronology
のdate
- パラメータ:
temporal
- 変換する一時オブジェクト、null以外- 戻り値:
- この暦でのローカル日付、null以外
- 関連項目:
-
localDateTime
public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal) 次のインタフェースからコピーされた説明:Chronology
別の時間的オブジェクトから、この暦のローカル日付/時間を取得します。これは、指定された時間的オブジェクトに基づいてこの暦での日付/時間を取得します。
TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoLocalDateTime
のインスタンスに変換します。変換では、時間的オブジェクトから
ChronoLocalDate
とLocalTime
を抽出し、組み合わせます。 実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。 結果ではこの暦を使用します。このメソッドは関数型インタフェース
TemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::localDateTime
を介して、問合せとして使用できます。- 定義:
- インタフェース
Chronology
のlocalDateTime
- パラメータ:
temporal
- 変換する一時オブジェクト、null以外- 戻り値:
- この暦でのローカル日付/時間、null以外
- 関連項目:
-
zonedDateTime
public ChronoZonedDateTime<HijrahDate> zonedDateTime(TemporalAccessor temporal) 次のインタフェースからコピーされた説明:Chronology
もう一方のtemporal (一時)オブジェクトからこの暦でChronoZonedDateTime
を取得します。これは、指定された時間的オブジェクトに基づいてこの暦でのゾーン付きの日付/時間を取得します。
TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoZonedDateTime
のインスタンスに変換します。変換では、まず時間的オブジェクトから
ZoneId
を取得し、必要に応じて、ZoneOffset
を使用します。 次に、Instant
を取得しようとし、必要に応じて、ChronoLocalDateTime
を使用します。 結果はZoneId
またはZoneOffset
とInstant
またはChronoLocalDateTime
のいずれかの組み合わせです。 実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。 結果ではこの暦を使用します。このメソッドは関数型インタフェース
TemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::zonedDateTime
を介して、問合せとして使用できます。- 定義:
- インタフェース
Chronology
のzonedDateTime
- パラメータ:
temporal
- 変換する一時オブジェクト、null以外- 戻り値:
- この暦でのゾーン付きの日付/時間、null以外
- 関連項目:
-
zonedDateTime
public ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone) 次のインタフェースからコピーされた説明:Chronology
Instant
からこの暦でChronoZonedDateTime
を取得します。これは、指定された同じインスタントで、ゾーン付きの日付/時間を取得します。
- 定義:
- インタフェース
Chronology
のzonedDateTime
- パラメータ:
instant
- 日付/時間の作成元のインスタント、null以外zone
- タイムゾーン、null以外- 戻り値:
- ゾーン付きの日付/時間、null以外
-
isLeapYear
public boolean isLeapYear(long prolepticYear) 次のインタフェースからコピーされた説明:Chronology
指定された年がうるう年であるかどうかをチェックします。うるう年は通常より長い年です。 正確な意味は、次の制約に従って、暦によって決定されます。
- うるう年はうるう年でない年より長い年の長さを示している必要があります。
- 年の概念をサポートしない暦はfalseを返す必要があります。
- 年表の有効範囲内のすべての年に正しい結果が返されなければなりません。
有効年の範囲外では、実装は自由に推測または偽を返すことができます。 たとえ年が有効年の範囲外であっても、実装は例外をスローしてはなりません。
- 定義:
- インタフェース
Chronology
のisLeapYear
- パラメータ:
prolepticYear
- チェックする先発暦の年、範囲が検証されない- 戻り値:
- 年がうるう年の場合はtrue
-
prolepticYear
public int prolepticYear(Era era, int yearOfEra) 次のインタフェースからコピーされた説明:Chronology
紀元と紀元年を指定して先発暦の年を計算します。これは紀元と紀元の年を単一の先発暦の年フィールドに組み合わせます。
JapaneseChronology
など、暦で紀元が頻繁に使われている場合、紀元の年が紀元に照らして検証されます。 他の暦の場合、検証はオプションです。- 定義:
- インタフェース
Chronology
のprolepticYear
- パラメータ:
era
- 暦の正しいタイプの紀元、null以外yearOfEra
- 暦の紀元の年- 戻り値:
- 先発暦の年
-
eraOf
public HijrahEra eraOf(int eraValue) 数値からHijrahEraオブジェクトを作成します。 ヒジュラ暦体系には0より大きい先発暦の年をカバーする紀元が1つしかありません。 このメソッドは、値1のシングルトンHijrahEraを返します。- 定義:
- インタフェース
Chronology
のeraOf
- パラメータ:
eraValue
- 紀元の値- 戻り値:
- 暦体系の紀元、null以外
- 例外:
DateTimeException
- 紀元を作成できない場合
-
eras
次のインタフェースからコピーされた説明:Chronology
暦の紀元のリストを取得します。ほとんどの暦体系には、その中で年が意味を持つ紀元があります。 暦体系が紀元の概念をサポートしていない場合、空のリストを返す必要があります。
- 定義:
- インタフェース
Chronology
のeras
- 戻り値:
- 暦の紀元のリスト、不変の場合がある、null以外
-
range
public ValueRange range(ChronoField field) 次のインタフェースからコピーされた説明:Chronology
指定されたフィールドの有効な値の範囲を取得します。すべてのフィールドは
long
整数で表現できます。 このメソッドは、その値の有効範囲を記述するオブジェクトを返します。結果は有効な最小値と最大値を記述しているだけなので、それらを深く解釈しすぎないことが重要です。 たとえば、範囲内の値であっても、フィールドに対して無効な場合があります。
このメソッドは、暦でフィールドをサポートしているかどうかに関係なく、結果を返します。
- 定義:
- インタフェース
Chronology
のrange
- パラメータ:
field
- 範囲を取得するフィールド、null以外- 戻り値:
- フィールドの有効値の範囲。null以外
-
resolveDate
public HijrahDate resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle) クラスからコピーされた説明:AbstractChronology
解析されたChronoField
の値を解析時の日付に解決します。ほとんどの
TemporalField
実装は、フィールド上の解決メソッドを使用して解決されます。 これに対し、ChronoField
クラスは暦に関連する意味のみを持つフィールドを定義します。 そのため、ChronoField
日付フィールドは、ここで特定の暦のコンテキストで解決されます。ChronoField
インスタンスはこのメソッドによって解決され、サブクラスでオーバーライドできます。EPOCH_DAY
- 存在する場合、日付に変換され、他のすべての日付フィールドがこの日付に対して照合されます。PROLEPTIC_MONTH
- 存在する場合、YEAR
とMONTH_OF_YEAR
に分割されます。 モードがstrictまたはsmartである場合、フィールドは検証されます。YEAR_OF_ERA
とERA
- 両方とも存在する場合、それらが組み合わされてYEAR
を形成します。 lenientモードではYEAR_OF_ERA
の範囲は検証されず、smartおよびstrictモードでは検証されます。ERA
は3つすべてのモードで範囲が検証されます。YEAR_OF_ERA
のみが存在し、モードがsmartまたはlenientの場合、最後の使用可能な紀元と想定されます。 strictモードでは、紀元が想定されず、YEAR_OF_ERA
はそのままの状態にされます。ERA
のみが存在する場合、それはそのままの状態にされます。YEAR
、MONTH_OF_YEAR
、DAY_OF_MONTH
- 3つすべてが存在する場合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEAR
が検証されます。 モードがsmartまたはstrictの場合、月と日が検証されます。 モードがlenientの場合、要求された年の最初の月の最初の日で日付を作成し、次に月数での差、次に日数での差を加算する場合と等しい方法で、日付が組み合わされます。 モードがsmartで、「月の日」が年-月の最大より大きい場合、「月の日」は最後の「月の日」に調整されます。 モードがstrictの場合、3つのフィールドは有効な日付を形成している必要があります。YEAR
とDAY_OF_YEAR
- 両方とも存在する場合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEAR
が検証されます。 モードがlenientの場合、要求された年の最初の日で日付を作成し、次に日数での差を加算する場合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの場合、2つのフィールドは有効な日付を形成している必要があります。YEAR
、MONTH_OF_YEAR
、ALIGNED_WEEK_OF_MONTH
、ALIGNED_DAY_OF_WEEK_IN_MONTH
- 4つすべてが存在する場合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEAR
が検証されます。 モードがlenientの場合、要求された年の最初の月の最初の日で日付を作成し、次に月数での差、次に週数での差、次に日数での差を加算する場合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの場合、4つすべてのフィールドがそれらの外側の範囲に対して検証されます。 次に、要求された年と月の最初の日で日付を作成し、次に週数と日数での量を加算して、それらの値に到達する場合と等しい方法で、日付が組み合わされます。 モードがstrictの場合、日付がさらに検証され、日と週の調整によって月が変更されていないかどうかがチェックされます。YEAR
、MONTH_OF_YEAR
、ALIGNED_WEEK_OF_MONTH
、DAY_OF_WEEK
- 4つすべてが存在する場合、それらが組み合わされて日付が形成されます。 このアプローチは、ALIGNED_DAY_OF_WEEK_IN_MONTH
の年、月、および週についての上記の説明と同じです。 年、月、および週が処理されると、曜日が次または同じ一致する曜日で調整されます。YEAR
、ALIGNED_WEEK_OF_YEAR
、ALIGNED_DAY_OF_WEEK_IN_YEAR
- 3つすべてが存在する場合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEAR
が検証されます。 モードがlenientの場合、要求された年の最初の日で日付を作成し、次に週数での差、次に日数での差を加算する場合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの場合、3つすべてのフィールドがそれらの外側の範囲に対して検証されます。 次に、要求された年の最初の日で日付を作成し、次に週数と日数での量を加算して、それらの値に到達する場合と等しい方法で、日付が組み合わされます。 モードがstrictの場合、日付がさらに検証され、日と週の調整によって年が変更されていないかどうかがチェックされます。YEAR
、ALIGNED_WEEK_OF_YEAR
、DAY_OF_WEEK
- 3つすべてが存在する場合、それらが組み合わされて日付が形成されます。 このアプローチは、ALIGNED_DAY_OF_WEEK_IN_YEAR
の年および週についての上記の説明と同じです。 年および週が処理されると、曜日が次または同じ一致する曜日で調整されます。
デフォルト実装はほとんどの暦体系に適切です。
ChronoField.ERA
なしでChronoField.YEAR_OF_ERA
が見つかった場合、Chronology.eras()
の最後の紀元が使用されます。 実装では、7日の週、最初の「月の日」の値が1、最初の「年の日」の値が1、最初の月と年が必ず存在するものと想定します。- 定義:
- インタフェース
Chronology
のresolveDate
- オーバーライド:
- クラス
AbstractChronology
のresolveDate
- パラメータ:
fieldValues
- フィールドと値のマップ、更新可能、null以外resolverStyle
- 要求された解決のタイプ、null以外- 戻り値:
- 解決された日付、日付を作成するための情報が不十分な場合はnull
-