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);
ID
、calendar type
、暦の開始、ISO暦との調整、一定の範囲の年の各月の長さを定義するプロパティ・リソースによって定義されます。バリアントは、calendars.properties
ファイルで識別されます。新しいプロパティには、"calendars.hijrah."
の接尾辞が付けられます。
プロパティ名 | プロパティ値 | 説明 |
---|---|---|
calendars.hijrah.{ID} | {ID} バリアントを定義するプロパティ・リソース |
プロパティ・リソースはcalendars.properties ファイルで見つかります。 |
calendars.hijrah.{ID}.type | カレンダ・タイプ | LDMLはカレンダ・タイプ名を定義します |
ヒジュラ暦のプロパティ・リソースは暦を記述する一連のプロパティです。構文は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 (この値を含む)の間である必要があります。 |
修飾子と型 | フィールドと説明 |
---|---|
static HijrahChronology |
INSTANCE
サウジ・アラビアのイスラム・ウム・アルクラ暦のシングルトン・インスタンス。
|
修飾子と型 | メソッドと説明 |
---|---|
HijrahDate |
date(Era era, int yearOfEra, int month, int dayOfMonth)
紀元、紀元年、月、および「月の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。
|
HijrahDate |
date(int prolepticYear, int month, int dayOfMonth)
先発暦の年、年の月、および「月の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。
|
HijrahDate |
date(TemporalAccessor temporal)
別の時間的オブジェクトから、この暦のローカル日付を取得します。
|
HijrahDate |
dateEpochDay(long epochDay)
エポック日から、ヒジュラ暦体系のローカル日付を取得します。
|
HijrahDate |
dateNow()
デフォルトのタイムゾーンのシステム・クロックからこの暦の現在のローカル日付を取得します。
|
HijrahDate |
dateNow(Clock clock)
指定されたクロックからこの暦の現在のローカル日付を取得します。
|
HijrahDate |
dateNow(ZoneId zone)
指定されたタイムゾーンのシステム・クロックからこの暦の現在のローカル日付を取得します。
|
HijrahDate |
dateYearDay(Era era, int yearOfEra, int dayOfYear)
紀元、紀元年、および「年の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。
|
HijrahDate |
dateYearDay(int prolepticYear, int dayOfYear)
先発暦の年および「年の日」フィールドから、ヒジュラ暦体系のローカル日付を取得します。
|
HijrahEra |
eraOf(int eraValue)
数値から、暦の紀元オブジェクトを作成します。
|
List<Era> |
eras()
暦の紀元のリストを取得します。
|
String |
getCalendarType()
イスラム暦のカレンダ・タイプを取得します。
|
String |
getId()
暦のIDを取得します。
|
boolean |
isLeapYear(long prolepticYear)
指定された年がうるう年であるかどうかをチェックします。
|
ChronoLocalDateTime<HijrahDate> |
localDateTime(TemporalAccessor temporal)
別の時間的オブジェクトから、この暦のローカル日付/時間を取得します。
|
int |
prolepticYear(Era era, int yearOfEra)
紀元と紀元年を指定して先発暦の年を計算します。
|
ValueRange |
range(ChronoField field)
指定されたフィールドの有効な値の範囲を取得します。
|
HijrahDate |
resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
解析された
ChronoField の値を解析時の日付に解決します。 |
ChronoZonedDateTime<HijrahDate> |
zonedDateTime(Instant instant, ZoneId zone)
Instant からこの暦でChronoZonedDateTime を取得します。 |
ChronoZonedDateTime<HijrahDate> |
zonedDateTime(TemporalAccessor temporal)
もう一方のtemporal (一時)オブジェクトからこの暦で
ChronoZonedDateTime を取得します。 |
compareTo, equals, hashCode, toString
from, getDisplayName, period
public static final HijrahChronology INSTANCE
Chronology.getAvailableChronologies()
から使用できる場合があります。public String getId()
このIDはChronology
を一意に識別します。これは、Chronology.of(String)
を使用して、Chronology
を検索するために使用できます。
Chronology
のgetId
getCalendarType()
public String getCalendarType()
カレンダ・タイプはUnicode Locale Data Markup Language (LDML)の仕様によって定義された識別子です。これは、Chronology.of(String)
を使用して、Chronology
を検索するために使用できます。
Chronology
のgetCalendarType
getId()
public HijrahDate date(Era era, int yearOfEra, int month, int dayOfMonth)
Chronology
のdate
era
- ヒジュラ暦の紀元、null以外yearOfEra
- 紀元の年month
- 年の月dayOfMonth
- 「月の日」DateTimeException
- 日付を作成できない場合ClassCastException
- era
がHijrahEra
でない場合public HijrahDate date(int prolepticYear, int month, int dayOfMonth)
Chronology
のdate
prolepticYear
- 先発暦の年month
- 年の月dayOfMonth
- 「月の日」DateTimeException
- 日付を作成できない場合public HijrahDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
Chronology
のdateYearDay
era
- ヒジュラ暦の紀元、null以外yearOfEra
- 紀元の年dayOfYear
- 「年の日」DateTimeException
- 日付を作成できない場合ClassCastException
- era
がHijrahEra
でない場合public HijrahDate dateYearDay(int prolepticYear, int dayOfYear)
Chronology
のdateYearDay
prolepticYear
- 先発暦の年dayOfYear
- 「年の日」DateTimeException
- 年の値が範囲外である場合、または年に対して「年の日」が無効である場合public HijrahDate dateEpochDay(long epochDay)
Chronology
のdateEpochDay
epochDay
- エポック日DateTimeException
- 日付を作成できない場合public HijrahDate dateNow()
Chronology
これは、デフォルトのタイムゾーンのsystem clock
を問い合わせ、現在の日付を取得します。
このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。
Chronology
のdateNow
public HijrahDate dateNow(ZoneId zone)
Chronology
これはsystem clock
を問い合わせて、現在の日付を取得します。タイムゾーンを指定すると、デフォルトのタイムゾーンへの依存を避けられます。
このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。
Chronology
のdateNow
zone
- 使用するゾーンID、null以外public HijrahDate dateNow(Clock clock)
Chronology
これは指定されたクロックを問い合わせ、現在の日付(今日)を取得します。このメソッドを使用すると、テストに代替のクロックを使用できます。代替のクロックはdependency injection
を使用して導入できます。
Chronology
のdateNow
clock
- 使用するクロック、null以外public HijrahDate date(TemporalAccessor temporal)
Chronology
これは、指定された時間的オブジェクトに基づいてこの暦での日付を取得します。TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoLocalDate
のインスタンスに変換します。
変換では一般に、暦体系全体で標準化されたEPOCH_DAY
フィールドを使用します。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::date
を介して、問合せとして使用できます。
Chronology
のdate
temporal
- 変換する一時オブジェクト、null以外ChronoLocalDate.from(TemporalAccessor)
public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
Chronology
これは、指定された時間的オブジェクトに基づいてこの暦での日付/時間を取得します。TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoLocalDateTime
のインスタンスに変換します。
変換では、時間的オブジェクトからChronoLocalDate
とLocalTime
を抽出し、組み合わせます。実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。結果ではこの暦を使用します。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::localDateTime
を介して、問合せとして使用できます。
Chronology
のlocalDateTime
temporal
- 変換する一時オブジェクト、null以外ChronoLocalDateTime.from(TemporalAccessor)
public ChronoZonedDateTime<HijrahDate> zonedDateTime(TemporalAccessor temporal)
Chronology
ChronoZonedDateTime
を取得します。
これは、指定された時間的オブジェクトに基づいてこの暦でのゾーン付きの日付/時間を取得します。TemporalAccessor
は任意の日付と時間情報のセットを表し、このファクトリがChronoZonedDateTime
のインスタンスに変換します。
変換では、まず時間的オブジェクトからZoneId
を取得し、必要に応じて、ZoneOffset
を使用します。次に、Instant
を取得しようとし、必要に応じて、ChronoLocalDateTime
を使用します。結果はZoneId
またはZoneOffset
とInstant
またはChronoLocalDateTime
のいずれかの組み合わせです。実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。結果ではこの暦を使用します。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照aChronology::zonedDateTime
を介して、問合せとして使用できます。
Chronology
のzonedDateTime
temporal
- 変換する一時オブジェクト、null以外ChronoZonedDateTime.from(TemporalAccessor)
public ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone)
Chronology
Instant
からこの暦でChronoZonedDateTime
を取得します。
これは、指定された同じインスタントで、ゾーン付きの日付/時間を取得します。
Chronology
のzonedDateTime
instant
- 日付/時間の作成元のインスタント、null以外zone
- タイムゾーン、null以外public boolean isLeapYear(long prolepticYear)
Chronology
うるう年は通常より長い年です。正確な意味は、次の制約に従って、暦によって決定されます。
Chronology
のisLeapYear
prolepticYear
- チェックする先発暦の年、範囲が検証されないpublic int prolepticYear(Era era, int yearOfEra)
Chronology
これは紀元と紀元の年を単一の先発暦の年フィールドに組み合わせます。
JapaneseChronology
など、暦で紀元が頻繁に使われている場合、紀元の年が紀元に照らして検証されます。他の暦の場合、検証はオプションです。
Chronology
のprolepticYear
era
- 暦の正しいタイプの紀元、null以外yearOfEra
- 暦の紀元の年public HijrahEra eraOf(int eraValue)
Chronology
この紀元は概念上、時系列の最大の区分です。ほとんどの暦体系には、時系列を2つの紀元に分割する1つのエポックがあります。ただし、一部には各指導者の統治期間に1つずつなど、複数の紀元があります。正確な意味は、次の制約に従って、暦によって決定されます。
1970-01-01で使用する紀元は値が1である必要があります。以降の紀元は、値が順に大きくなる必要があります。以前の紀元は、値が順に小さくなる必要があります。各暦は列挙または類似のシングルトンを参照して、紀元の値を提供する必要があります。
このメソッドは、指定された紀元の値に対して、正しいタイプのシングルトンの紀元を返します。
Chronology
のeraOf
eraValue
- 紀元の値public List<Era> eras()
Chronology
ほとんどの暦体系には、その中で年が意味を持つ紀元があります。暦体系が紀元の概念をサポートしていない場合、空のリストを返す必要があります。
Chronology
のeras
public ValueRange range(ChronoField field)
Chronology
すべてのフィールドはlong
整数で表現できます。このメソッドは、その値の有効範囲を記述するオブジェクトを返します。
結果は有効な最小値と最大値を記述しているだけなので、それらを深く解釈しすぎないことが重要です。たとえば、範囲内の値であっても、フィールドに対して無効な場合があります。
このメソッドは、暦でフィールドをサポートしているかどうかに関係なく、結果を返します。
Chronology
のrange
field
- 範囲を取得するフィールド、null以外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以外 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。