クラスHijrahChronology

java.lang.Object
java.time.chrono.AbstractChronology
java.time.chrono.HijrahChronology
すべての実装されたインタフェース:
Serializable, Comparable<Chronology>, Chronology

public final class HijrahChronology extends AbstractChronology implements Serializable
ヒジュラ暦はイスラ 暦をサポートする太陰暦です。

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);
 
実装要件:
このクラスは不変でスレッドセーフです。
実装上のノート:
ヒジュラ暦の各バリアントは個別に構成されます。 各バリアントは、IDcalendar type、暦の開始、ISO暦との調整、一定の範囲の年の各月の長さを定義するプロパティ・リソースによって定義されます。 バリアントは、HijrahChronologyによってhijrah-config-<calendar type>.propertiesからのリソースとしてロードされます。

ヒジュラ暦のプロパティ・リソースは暦を記述する一連のプロパティです。 構文は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
関連 目:
  • フィールド詳細

    • INSTANCE

      public static final HijrahChronology INSTANCE
      サウジ・アラビアのイスラ ・ウ ・アルクラ暦のシングルトン・インスタンス。 その他のヒジュラ暦のバリアントはChronology.getAvailableChronologies()から使用できる 合があります。
  • メソッドの詳細

    • getId

      public String getId()
      暦のIDを取得します。

      このIDはChronologyを一意に識別します。 これは、Chronology.of(String)を使用して、Chronologyを検索するために使用できます。

      定義:
      インタフェースChronologygetId
      戻り値:
      暦ID、null以外
      関連 目:
    • getCalendarType

      public String getCalendarType()
      イスラ 暦のカレンダ・タイプを取得します。

      カレンダ・タイプはUnicode Locale Data Markup Language (LDML)の仕様によって定義された識別子です。 これは、Chronology.of(String)を使用して、Chronologyを検索するために使用できます。

      定義:
      インタフェースChronologygetCalendarType
      戻り値:
      暦体系のタイプ、暦が標準タイプでない 合はnull以外、それ以外の 合はnull
      関連 目:
    • date

      public HijrahDate date(Era era, int yearOfEra, int month, int dayOfMonth)
      紀元、紀元年、月、および「月の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。
      定義:
      インタフェースChronologydate
      パラメータ:
      era - ヒジュラ暦の紀元、null以外
      yearOfEra - 紀元の年
      month - 年の月
      dayOfMonth - 「月の日」
      戻り値:
      ヒジュラ暦のローカル日付、null以外
      スロー:
      DateTimeException - 日付を作成できない 合
      ClassCastException - eraHijrahEraでない 合
    • date

      public HijrahDate date(int prolepticYear, int month, int dayOfMonth)
      先発暦の年、年の月、および「月の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。
      定義:
      インタフェースChronologydate
      パラメータ:
      prolepticYear - 先発暦の年
      month - 年の月
      dayOfMonth - 「月の日」
      戻り値:
      ヒジュラ暦のローカル日付、null以外
      スロー:
      DateTimeException - 日付を作成できない 合
    • dateYearDay

      public HijrahDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
      紀元、紀元年、および「年の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。
      定義:
      インタフェースChronologydateYearDay
      パラメータ:
      era - ヒジュラ暦の紀元、null以外
      yearOfEra - 紀元の年
      dayOfYear - 「年の日」
      戻り値:
      ヒジュラ暦のローカル日付、null以外
      スロー:
      DateTimeException - 日付を作成できない 合
      ClassCastException - eraHijrahEraでない 合
    • dateYearDay

      public HijrahDate dateYearDay(int prolepticYear, int dayOfYear)
      先発暦の年および「年の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。
      定義:
      インタフェースChronologydateYearDay
      パラメータ:
      prolepticYear - 先発暦の年
      dayOfYear - 「年の日」
      戻り値:
      ヒジュラ暦のローカル日付、null以外
      スロー:
      DateTimeException - 年の値が範囲外である 合、または年に対して「年の日」が無効である 合
    • dateEpochDay

      public HijrahDate dateEpochDay(long epochDay)
      エポック日から、ヒジュラ暦体系のローカル日付を取得します。
      定義:
      インタフェースChronologydateEpochDay
      パラメータ:
      epochDay - エポック日
      戻り値:
      ヒジュラ暦のローカル日付、null以外
      スロー:
      DateTimeException - 日付を作成できない 合
    • dateNow

      public HijrahDate dateNow()
      次のインタフェースからコピーされた説明: Chronology
      デフォルトのタイ ゾーンのシステ ・クロックからこの暦の現在のローカル日付を取得します。

      これは、デフォルトのタイ ゾーンのsystem clockを問い合わせ、現在の日付を取得します。

      このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。

      定義:
      インタフェースChronologydateNow
      戻り値:
      システ クロックとデフォルトのタイ ゾーンを使用した現在のローカル日付、null以外
    • dateNow

      public HijrahDate dateNow(ZoneId zone)
      次のインタフェースからコピーされた説明: Chronology
      指定されたタイ ゾーンのシステ ・クロックからこの暦の現在のローカル日付を取得します。

      これはsystem clockを問い合わせて、現在の日付を取得します。 タイ ゾーンを指定すると、デフォルトのタイ ゾーンへの依存を避けられます。

      このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。

      定義:
      インタフェースChronologydateNow
      パラメータ:
      zone - 使用するゾーンID、null以外
      戻り値:
      システ クロックを使用した現在のローカル日付、null以外
    • dateNow

      public HijrahDate dateNow(Clock clock)
      次のインタフェースからコピーされた説明: Chronology
      指定されたクロックからこの暦の現在のローカル日付を取得します。

      これは指定されたクロックを問い合わせ、現在の日付(今日)を取得します。 このメソッドを使用すると、テストに代替のクロックを使用できます。 代替のクロックはdependency injectionを使用して導入できます。

      定義:
      インタフェースChronologydateNow
      パラメータ:
      clock - 使用するクロック、null以外
      戻り値:
      現在のローカル日付、null以外
    • date

      public HijrahDate date(TemporalAccessor temporal)
      次のインタフェースからコピーされた説明: Chronology
      別の時間的オブジェクトから、この暦のローカル日付を取得します。

      これは、指定された時間的オブジェクトに基づいてこの暦での日付を取得します。 TemporalAccessorは任意の日付と時間情 のセットを表し、このファクトリがChronoLocalDateのインスタンスに変換します。

      変換では一般に、暦体系全体で標準化されたEPOCH_DAYフィールドを使用します。

      このメソッドは関数型インタフェースTemporalQueryのシグネチャに一致するため、メソッド参照aChronology::dateを介して、問合せとして使用できます。

      定義:
      インタフェースChronologydate
      パラメータ:
      temporal - 変換する一時オブジェクト、null以外
      戻り値:
      この暦でのローカル日付、null以外
      関連 目:
    • localDateTime

      public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
      次のインタフェースからコピーされた説明: Chronology
      別の時間的オブジェクトから、この暦のローカル日付/時間を取得します。

      これは、指定された時間的オブジェクトに基づいてこの暦での日付/時間を取得します。 TemporalAccessorは任意の日付と時間情 のセットを表し、このファクトリがChronoLocalDateTimeのインスタンスに変換します。

      変換では、時間的オブジェクトからChronoLocalDateLocalTimeを抽出し、組み合わせます。 実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。 結果ではこの暦を使用します。

      このメソッドは関数型インタフェースTemporalQueryのシグネチャに一致するため、メソッド参照aChronology::localDateTimeを介して、問合せとして使用できます。

      定義:
      インタフェースChronologylocalDateTime
      パラメータ:
      temporal - 変換する一時オブジェクト、null以外
      戻り値:
      この暦でのローカル日付/時間、null以外
      関連 目:
    • zonedDateTime

      public ChronoZonedDateTime<HijrahDate> zonedDateTime(TemporalAccessor temporal)
      次のインタフェースからコピーされた説明: Chronology
      もう一方のtemporal (一時)オブジェクトからこの暦でChronoZonedDateTimeを取得します。

      これは、指定された時間的オブジェクトに基づいてこの暦でのゾーン付きの日付/時間を取得します。 TemporalAccessorは任意の日付と時間情 のセットを表し、このファクトリがChronoZonedDateTimeのインスタンスに変換します。

      変換では、まず時間的オブジェクトからZoneIdを取得し、必要に応じて、ZoneOffsetを使用します。 次に、Instantを取得しようとし、必要に応じて、ChronoLocalDateTimeを使用します。 結果はZoneIdまたはZoneOffsetInstantまたはChronoLocalDateTimeのいずれかの組み合わせです。 実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。 結果ではこの暦を使用します。

      このメソッドは関数型インタフェースTemporalQueryのシグネチャに一致するため、メソッド参照aChronology::zonedDateTimeを介して、問合せとして使用できます。

      定義:
      インタフェースChronologyzonedDateTime
      パラメータ:
      temporal - 変換する一時オブジェクト、null以外
      戻り値:
      この暦でのゾーン付きの日付/時間、null以外
      関連 目:
    • zonedDateTime

      public ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone)
      次のインタフェースからコピーされた説明: Chronology
      Instantからこの暦でChronoZonedDateTimeを取得します。

      これは、指定された同じインスタントで、ゾーン付きの日付/時間を取得します。

      定義:
      インタフェースChronologyzonedDateTime
      パラメータ:
      instant - 日付/時間の作成元のインスタント、null以外
      zone - タイ ゾーン、null以外
      戻り値:
      ゾーン付きの日付/時間、null以外
    • isLeapYear

      public boolean isLeapYear(long prolepticYear)
      次のインタフェースからコピーされた説明: Chronology
      指定された年がうるう年であるかどうかをチェックします。

      うるう年は通常より長い年です。 正確な意味は、次の制約に従って、暦によって決定されます。

      • うるう年はうるう年でない年より長い年の長さを示している必要があります。
      • 年の概念をサポートしない暦はfalseを返す必要があります。
      • 正しい結果は、年代記のための有効な年の範囲内のすべての年で返されなければなりません。

      有効な年の範囲外では、実装は最適な推測または偽のいずれかを返すことができます。 実装では、年が有効な年の範囲外であっても例外をスローしないでく さい。

      定義:
      インタフェースChronologyisLeapYear
      パラメータ:
      prolepticYear - チェックする先発暦の年、範囲が検証されない
      戻り値:
      年がうるう年の 合はtrue
    • prolepticYear

      public int prolepticYear(Era era, int yearOfEra)
      次のインタフェースからコピーされた説明: Chronology
      紀元と紀元年を指定して先発暦の年を計算します。

      これは紀元と紀元の年を単一の先発暦の年フィールドに組み合わせます。

      JapaneseChronologyなど、暦で紀元が 繁に使われている 合、紀元の年が紀元に照らして検証されます。 他の暦の 合、検証はオプションです。

      定義:
      インタフェースChronologyprolepticYear
      パラメータ:
      era - 暦の正しいタイプの紀元、null以外
      yearOfEra - 暦の紀元の年
      戻り値:
      先発暦の年
    • eraOf

      public HijrahEra eraOf(int eraValue)
      数値からHijrahEraオブジェクトを作成します。 ヒジュラ暦体系には0より大きい先発暦の年をカバーする紀元が1つしかありません。 このメソッドは、値1のシングルトンHijrahEraを返します。
      定義:
      インタフェースChronologyeraOf
      パラメータ:
      eraValue - 紀元の値
      戻り値:
      暦体系の紀元、null以外
      スロー:
      DateTimeException - 紀元を作成できない 合
    • eras

      public List<Era> eras()
      次のインタフェースからコピーされた説明: Chronology
      暦の紀元のリストを取得します。

      ほとんどの暦体系には、その中で年が意味を持つ紀元があります。 暦体系が紀元の概念をサポートしていない 合、空のリストを返す必要があります。

      定義:
      インタフェースChronologyeras
      戻り値:
      暦の紀元のリスト、不変の 合がある、null以外
    • range

      public ValueRange range(ChronoField field)
      次のインタフェースからコピーされた説明: Chronology
      指定されたフィールドの有効な値の範囲を取得します。

      すべてのフィールドはlong整数で表現できます。 このメソッドは、その値の有効範囲を記述するオブジェクトを返します。

      結果は有効な最小値と最大値を記述している けなので、それらを深く解釈しすぎないことが重要です。 たとえば、範囲内の値であっても、フィールドに対して無効な 合があります。

      このメソッドは、暦でフィールドをサポートしているかどうかに関係なく、結果を返します。

      定義:
      インタフェースChronologyrange
      パラメータ:
      field - 範囲を取得するフィールド、null以外
      戻り値:
      フィールドの有効値の範囲。null以外
    • resolveDate

      public HijrahDate resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle)
      クラスからコピーされた説明: AbstractChronology
      解析されたChronoFieldの値を解析時の日付に解決します。

      ほとんどのTemporalField実装は、フィールド上の解決メソッドを使用して解決されます。 これに対し、ChronoFieldクラスは暦に関連する意味のみを持つフィールドを定義します。 そのため、ChronoField日付フィールドは、ここで特定の暦のコンテキストで解決されます。

      ChronoFieldインスタンスはこのメソッドによって解決され、サブクラスでオーバーライドできます。

      • EPOCH_DAY - 存在する 合、日付に変換され、他のすべての日付フィールドがこの日付に対して照合されます。
      • PROLEPTIC_MONTH - 存在する 合、YEARMONTH_OF_YEARに分割されます。 モードがstrictまたはsmartである 合、フィールドは検証されます。
      • YEAR_OF_ERAERA - 両方とも存在する 合、それらが組み合わされてYEARを形成します。 lenientモードではYEAR_OF_ERAの範囲は検証されず、smartおよびstrictモードでは検証されます。 ERAは3つすべてのモードで範囲が検証されます。 YEAR_OF_ERAのみが存在し、モードがsmartまたはlenientの 合、最後の使用可能な紀元と想定されます。 strictモードでは、紀元が想定されず、YEAR_OF_ERAはそのままの状態にされます。 ERAのみが存在する 合、それはそのままの状態にされます。
      • YEARMONTH_OF_YEARDAY_OF_MONTH - 3つすべてが存在する 合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEARが検証されます。 モードがsmartまたはstrictの 合、月と日が検証されます。 モードがlenientの 合、要求された年の最初の月の最初の日で日付を作成し、次に月数での差、次に日数での差を 算する 合と等しい方法で、日付が組み合わされます。 モードがsmartで、「月の日」が年-月の最大より大きい 合、「月の日」は最後の「月の日」に調整されます。 モードがstrictの 合、3つのフィールドは有効な日付を形成している必要があります。
      • YEARDAY_OF_YEAR - 両方とも存在する 合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEARが検証されます。 モードがlenientの 合、要求された年の最初の日で日付を作成し、次に日数での差を 算する 合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの 合、2つのフィールドは有効な日付を形成している必要があります。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHALIGNED_DAY_OF_WEEK_IN_MONTH - 4つすべてが存在する 合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEARが検証されます。 モードがlenientの 合、要求された年の最初の月の最初の日で日付を作成し、次に月数での差、次に週数での差、次に日数での差を 算する 合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの 合、4つすべてのフィールドがそれらの外側の範囲に対して検証されます。 次に、要求された年と月の最初の日で日付を作成し、次に週数と日数での量を 算して、それらの値に到達する 合と等しい方法で、日付が組み合わされます。 モードがstrictの 合、日付がさらに検証され、日と週の調整によって月が変更されていないかどうかがチェックされます。
      • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHDAY_OF_WEEK - 4つすべてが存在する 合、それらが組み合わされて日付が形成されます。 このアプローチは、ALIGNED_DAY_OF_WEEK_IN_MONTHの年、月、および週についての上記の説明と同じです。 年、月、および週が処理されると、曜日が次または同じ一致する曜日で調整されます。
      • YEARALIGNED_WEEK_OF_YEARALIGNED_DAY_OF_WEEK_IN_YEAR - 3つすべてが存在する 合、それらが組み合わされて日付が形成されます。 3つすべてのモードで、YEARが検証されます。 モードがlenientの 合、要求された年の最初の日で日付を作成し、次に週数での差、次に日数での差を 算する 合と等しい方法で、日付が組み合わされます。 モードがsmartまたはstrictの 合、3つすべてのフィールドがそれらの外側の範囲に対して検証されます。 次に、要求された年の最初の日で日付を作成し、次に週数と日数での量を 算して、それらの値に到達する 合と等しい方法で、日付が組み合わされます。 モードがstrictの 合、日付がさらに検証され、日と週の調整によって年が変更されていないかどうかがチェックされます。
      • YEARALIGNED_WEEK_OF_YEARDAY_OF_WEEK - 3つすべてが存在する 合、それらが組み合わされて日付が形成されます。 このアプローチは、ALIGNED_DAY_OF_WEEK_IN_YEARの年および週についての上記の説明と同じです。 年および週が処理されると、曜日が次または同じ一致する曜日で調整されます。

      デフォルト実装はほとんどの暦体系に適切です。 ChronoField.ERAなしでChronoField.YEAR_OF_ERAが見つかった 合、Chronology.eras()の最後の紀元が使用されます。 実装では、7日の週、最初の「月の日」の値が1、最初の「年の日」の値が1、最初の月と年が必ず存在するものと想定します。

      定義:
      インタフェースChronologyresolveDate
      オーバーライド:
      クラスAbstractChronologyresolveDate
      パラメータ:
      fieldValues - フィールドと値のマップ、更新可能、null以外
      resolverStyle - 要求された解決のタイプ、null以外
      戻り値:
      解決された日付、日付を作成するための情 が不十分な 合はnull