- java.lang.Object
-
- java.time.chrono.AbstractChronology
-
- java.time.chrono.HijrahChronology
-
- All Implemented Interfaces:
-
Serializable
,Comparable<Chronology>
,Chronology
public final class HijrahChronology extends AbstractChronology implements Serializable
Hijrah日历是支持伊斯兰教日历的农历。HijrahChronology遵循Hijrah日历系统的规则。 Hijrah日历有几个变体,基于新月确定发生的时间和观察的区别。 在一些变型中,每个月的长度由月球和地球的天文数据算术地计算,而在另一些变型中,月的长度由新月的授权瞄准确定。 对于基于算法的日历,日历可以投射到未来。 对于基于瞄准的日历,只有历史数据可以提供。
每个月的长度是29或30天。 普通年期354天; 闰年有355天。
CLDR和LDML识别变体:
Variants of Hijrah Calendars Chronology ID Calendar Type Locale extension, seeLocale
Description Hijrah-umalqura islamic-umalqura ca-islamic-umalqura Islamic - Umm Al-Qura calendar of Saudi Arabia其他变体可通过
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);
- 实现要求:
- 这个类是不可变的和线程安全的。
- Implementation Note:
-
每个Hijrah变种单独配置。
每个变体是由定义该属性资源定义
ID
,在calendar type
,日历,与ISO日历的对准,并且每个月的一定范围的年长度的开始。 这些变体由HijrahChronology作为资源从hijrah-config- <calendar type> .properties加载。Hijrah属性资源是描述日历的一组属性。 语法由
Configuration of Hijrah Calendar Property Name Property value Description id Chronology Id, for example, "Hijrah-umalqura" The Id of the calendar in common usage type Calendar type, for example, "islamic-umalqura" LDML defines the calendar types version Version, for example: "1.8.0_1" The version of the Hijrah variant data iso-start ISO start date, formatted asjava.util.Properties#load(Reader)
定义。yyyy-MM-dd
, for example: "1900-04-30" The ISO date of the first day of the minimum Hijrah year. yyyy - a numeric 4 digit year, for example "1434" The value is a sequence of 12 month lengths, for example: "29 30 29 30 29 30 30 30 29 30 29 29" The lengths of the 12 months of the year separated by whitespace. A numeric year property must be present for every year without any gaps. The month lengths must be between 29-32 inclusive. - 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field 描述 static HijrahChronology
INSTANCE
沙特阿拉伯伊斯兰教Umm Al-Qura日历的单身人士例子。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 HijrahDate
date(int prolepticYear, int month, int dayOfMonth)
在Hijrah日历系统中,从幼稚年份,月份和月份月份获取当地日期。HijrahDate
date(Era era, int yearOfEra, int month, int dayOfMonth)
从Hijrah日历系统的时代,年龄,月份和月份月份获取当地的日期。HijrahDate
date(TemporalAccessor temporal)
从另一个时间对象获取本年龄的本地日期。HijrahDate
dateEpochDay(long epochDay)
从Hijrah日历系统中获取当地的日期。HijrahDate
dateNow()
从默认时区的系统时钟获取此时间顺序中的当前本地日期。HijrahDate
dateNow(Clock clock)
从指定的时钟获取本年龄的当前本地日期。HijrahDate
dateNow(ZoneId zone)
从指定时区的系统时钟获取此时间顺序中的当前本地日期。HijrahDate
dateYearDay(int prolepticYear, int dayOfYear)
从日光年和日间字段获取Hijrah日历系统中的当地日期。HijrahDate
dateYearDay(Era era, int yearOfEra, int dayOfYear)
从Hijrah日历系统的时代,年龄和日期领域获得当地的日期。HijrahEra
eraOf(int eraValue)
从数值创建HijrahEra对象。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)
获得ChronoZonedDateTime
在从这个年表Instant
。ChronoZonedDateTime<HijrahDate>
zonedDateTime(TemporalAccessor temporal)
从另一个时间对象获取这个年表中的ChronoZonedDateTime
。-
Methods inherited from class java.time.chrono.AbstractChronology
compareTo, equals, hashCode, toString
-
Methods inherited from interface java.time.chrono.Chronology
epochSecond, epochSecond, from, getDisplayName, period
-
-
-
-
字段详细信息
-
INSTANCE
public static final HijrahChronology INSTANCE
沙特阿拉伯伊斯兰教Umm Al-Qura日历的单身人士例子。 其他Hijrah年表变体可从Chronology.getAvailableChronologies()
获得 。
-
-
方法详细信息
-
getId
public String getId()
获取年表的ID。该ID唯一标识了
Chronology
。 它可以用于查找Chronology
使用Chronology.of(String)
。- Specified by:
-
getId
在接口Chronology
- 结果
- 年表ID,非空
- 另请参见:
-
getCalendarType()
-
getCalendarType
public String getCalendarType()
获取伊斯兰历法的日历类型。日历类型是由Unicode区域设置数据标记语言(LDML)规范定义的标识符。 它可以用于查找
Chronology
使用Chronology.of(String)
。- Specified by:
-
getCalendarType
在接口Chronology
- 结果
- 日历系统类型; 如果日历具有标准类型,则为非空,否则为空
- 另请参见:
-
getId()
-
date
public HijrahDate date(Era era, int yearOfEra, int month, int dayOfMonth)
从Hijrah日历系统的时代,年龄,月份和月份月份获取当地的日期。- Specified by:
-
date
在接口Chronology
- 参数
-
era
- Hijrah时代,不为空 -
yearOfEra
- 年代 -
month
- 年月 -
dayOfMonth
- 月的日子 - 结果
- Hijrah本地日期,不为null
- 异常
-
DateTimeException
- 如果无法创建日期 -
ClassCastException
- 如果era
不是HijrahEra
-
date
public HijrahDate date(int prolepticYear, int month, int dayOfMonth)
在Hijrah日历系统中,从幼稚年份,月份和月份月份获取当地日期。- Specified by:
-
date
在接口Chronology
- 参数
-
prolepticYear
-prolepticYear
年 -
month
- 年月 -
dayOfMonth
- 月的日子 - 结果
- Hijrah本地日期,不为null
- 异常
-
DateTimeException
- 如果无法创建日期
-
dateYearDay
public HijrahDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
从Hijrah日历系统的时代,年龄和日期领域获得当地的日期。- Specified by:
-
dateYearDay
在接口Chronology
- 参数
-
era
- Hijrah时代,不为空 -
yearOfEra
- 年代 -
dayOfYear
- 一年的日子 - 结果
- Hijrah本地日期,不为null
- 异常
-
DateTimeException
- 如果无法创建日期 -
ClassCastException
- 如果era
不是HijrahEra
-
dateYearDay
public HijrahDate dateYearDay(int prolepticYear, int dayOfYear)
从日光年和日间字段获取Hijrah日历系统中的当地日期。- Specified by:
-
dateYearDay
在接口Chronology
- 参数
-
prolepticYear
-prolepticYear
年 -
dayOfYear
- 年的日子 - 结果
- Hijrah本地日期,不为null
- 异常
-
DateTimeException
- 如果年度的价值超出了范围,或者如果今年的日期在一年中无效
-
dateEpochDay
public HijrahDate dateEpochDay(long epochDay)
从Hijrah日历系统中获取当地的日期。- Specified by:
-
dateEpochDay
在接口Chronology
- 参数
-
epochDay
- 纪元日 - 结果
- Hijrah本地日期,不为null
- 异常
-
DateTimeException
- 如果无法创建日期
-
dateNow
public HijrahDate dateNow()
说明从界面Chronology
复制- Specified by:
-
dateNow
在接口Chronology
- 结果
- 当前本地日期使用系统时钟和默认时区,不为空
-
dateNow
public HijrahDate dateNow(ZoneId zone)
描述从接口Chronology
复制- Specified by:
-
dateNow
在接口Chronology
- 参数
-
zone
- 要使用的区域ID,不为空 - 结果
- 当前本地日期使用系统时钟,不为null
-
dateNow
public HijrahDate dateNow(Clock clock)
说明从接口Chronology
复制从指定的时钟获取本年龄的当前本地日期。这将查询指定的时钟以获取当前日期 - 今天。 使用此方法可以使用备用时钟进行测试。 替代时钟可以使用
dependency injection
引入。- Specified by:
-
dateNow
在接口Chronology
- 参数
-
clock
- 要使用的时钟,不为空 - 结果
- 当前本地日期,不为null
-
date
public HijrahDate date(TemporalAccessor temporal)
描述从接口Chronology
复制从另一个时间对象获取本年龄的本地日期。这在这个时间表中基于指定的时间获得日期。 A
TemporalAccessor
表示日期和时间信息的任意集合,该工厂将转换为ChronoLocalDate
的实例。转换通常使用
EPOCH_DAY
字段,这是跨日历系统标准化的。该方法匹配功能接口
TemporalQuery
的签名,允许其通过方法参考aChronology::date
用作查询。- Specified by:
-
date
在接口Chronology
- 参数
-
temporal
- 要转换的时间对象,不为null - 结果
- 这个年代的本地日期,不为空
- 另请参见:
-
ChronoLocalDate.from(TemporalAccessor)
-
localDateTime
public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
描述从接口Chronology
复制从另一个时间对象获取本年龄的本地日期时间。这在这个时间表中基于指定的时间获得日期时间。 A
TemporalAccessor
表示一个任意的日期和时间信息集,该工厂转换为ChronoLocalDateTime
一个实例。转换提取并从时间对象中组合了
ChronoLocalDate
和LocalTime
。 允许实现执行优化,例如访问与相关对象相当的那些字段。 结果使用这个年表。该方法匹配功能界面
TemporalQuery
的签名,允许它通过方法参考aChronology::localDateTime
用作查询。- Specified by:
-
localDateTime
在接口Chronology
- 参数
-
temporal
- 要转换的时间对象,不为null - 结果
- 在这个年代的本地日期时间,不为空
- 另请参见:
-
ChronoLocalDateTime.from(TemporalAccessor)
-
zonedDateTime
public ChronoZonedDateTime<HijrahDate> zonedDateTime(TemporalAccessor temporal)
说明从界面Chronology
复制从另一个时间对象获得这个年龄的ChronoZonedDateTime
。根据指定的时间,在这个年表中获得一个分区的日期时间。 A
TemporalAccessor
代表日期和时间信息的任意集合,该工厂转换为ChronoZonedDateTime
的实例。转换将首先从时间对象获取一个
ZoneId
,如果需要,可以回到ZoneOffset
。 然后会尝试获得一个Instant
,如果需要的话可以回复到ChronoLocalDateTime
。 结果将是ZoneId
或ZoneOffset
与Instant
或ChronoLocalDateTime
。 允许实现执行优化,例如访问与相关对象相当的那些字段。 结果使用这个年表。该方法匹配功能界面
TemporalQuery
的签名,允许其通过方法参考aChronology::zonedDateTime
用作查询。- Specified by:
-
zonedDateTime
在接口Chronology
- 参数
-
temporal
- 要转换的时间对象,不为null - 结果
- 在这个年代的分区日期 - 时间,不为空
- 另请参见:
-
ChronoZonedDateTime.from(TemporalAccessor)
-
zonedDateTime
public ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone)
描述从界面Chronology
复制获得ChronoZonedDateTime
在从这个年表Instant
。这将获得与指定的相同时间的分区日期时间。
- Specified by:
-
zonedDateTime
在接口Chronology
- 参数
-
instant
- 即时创建日期时间,不为null -
zone
- 时区,不为空 - 结果
- 划分的日期时间,不为空
-
isLeapYear
public boolean isLeapYear(long prolepticYear)
描述从接口Chronology
复制检查指定年份是否是闰年。闰年是一个比正常长的一年。 确切的含义由年龄根据以下约束决定。
- 闰年必须意味着比非闰年更长的一年。
- 不支持一年概念的年表必须返回假。
- 正确的结果必须在年龄的有效范围内返回所有年份。
在有效年龄范围之外,实施可以自由返回最佳猜测或假。 即使该年度超出有效年限的范围,实施也不能抛出异常。
- Specified by:
-
isLeapYear
在接口Chronology
- 参数
-
prolepticYear
- 检查年份,无法验证范围 - 结果
- 如果这一年是闰年,那么真的
-
prolepticYear
public int prolepticYear(Era era, int yearOfEra)
说明从界面Chronology
复制计算年龄和年龄的幼年时期。这将时代与时代融为一体的年轻一代。
如果年表积极利用时代,如
JapaneseChronology
那么年龄就会在这个时代得到验证。 对于其他年表,验证是可选的。- Specified by:
-
prolepticYear
在接口Chronology
- 参数
-
era
- 正确类型为时代的时代,不为空 -
yearOfEra
- 年代的年代 - 结果
- 幼稚的一年
-
eraOf
public HijrahEra eraOf(int eraValue)
从数值创建HijrahEra对象。 Hijrah日历系统只有一个时代覆盖了大于0的幼年时光。 此方法返回单数HijrahEra的值1。- Specified by:
-
eraOf
在接口Chronology
- 参数
-
eraValue
- 时代价值 - 结果
- 日历系统时代,不为空
- 异常
-
DateTimeException
- 如果无法创建时代
-
eras
public List<Era> eras()
描述从界面Chronology
复制获取年表的时间列表。大多数日历系统都有一个时代,其中一年有意义。 如果日历系统不支持时间的概念,则必须返回空列表。
- Specified by:
-
eras
在接口Chronology
- 结果
- 时间表的时代列表可能是不可变的,不为零
-
range
public ValueRange range(ChronoField field)
描述从接口Chronology
复制获取指定字段的有效值的范围。所有字段可以表示为
long
整数。 此方法返回描述该值的有效范围的对象。请注意,结果仅描述最小和最大有效值,重要的是不要太多读取它们。 例如,可以在该范围内的值对该字段无效。
无论年表是否支持该字段,此方法将返回结果。
- Specified by:
-
range
在接口Chronology
- 参数
-
field
- 获取范围的字段,不为null - 结果
- 字段的有效值的范围不为null
-
resolveDate
public HijrahDate resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
描述从类复制:AbstractChronology
解析解析中的ChronoField
的日期。大多数
TemporalField
实现使用该字段上的resolve方法来解析。 相比之下,ChronoField
类定义的字段只具有相对于年表的意义。 因此,ChronoField
日期字段在具体年表的上下文中解决。ChronoField
实例通过此方法解决,这可能会在子类中被覆盖。-
EPOCH_DAY
- 如果存在,EPOCH_DAY
其转换为日期,然后根据日期对所有其他日期字段进行交叉检查。 -
PROLEPTIC_MONTH
- 如果存在,那么它被拆分为YEAR
和MONTH_OF_YEAR
。 如果模式是严格的或智能的,则该字段被验证。 -
YEAR_OF_ERA
和ERA
- 如果两者都存在,则它们被组合以形成YEAR
。 在宽松的模式下,YEAR_OF_ERA
范围是无法验证的,在智能和严格的模式下。 在所有三种模式下,ERA
的范围都被验证。 如果只有YEAR_OF_ERA
存在,并且模式是聪明或宽松的,那么假设最后一个可用的时代。 在严格的模式下,没有任何时代被假定,而YEAR_OF_ERA
保持不变。 如果只有ERA
存在,那么它是保持不变的。 -
YEAR
,MONTH_OF_YEAR
和DAY_OF_MONTH
-如果所有三个都存在,那么它们被组合成一个日期。 在所有三种模式下,YEAR
都经过验证。 如果模式是聪明或严格的,则验证月和日。 如果模式宽松,则以相当于在请求年份的第一个月的第一天创建日期的方式组合日期,然后将月份中的差额加上差异天数。 如果模式是聪明的,并且月的日期大于年月的最大值,则月的日期被调整到最后一个月。 如果模式严格,则三个字段必须形成有效的日期。 -
YEAR
和DAY_OF_YEAR
- 如果两者都存在,则它们被组合以形成日期。 在所有三种模式下,YEAR
都经过验证。 如果模式宽松,那么日期将以相当于在请求年的第一天创建日期的方式组合,然后加上差异。 如果模式是聪明或严格的,那么这两个字段必须形成一个有效的日期。 -
YEAR
,MONTH_OF_YEAR
,ALIGNED_WEEK_OF_MONTH
和ALIGNED_DAY_OF_WEEK_IN_MONTH
-如果所有四个都存在,则它们被组合以形成一个日期。 在所有三种模式下,YEAR
都经过验证。 如果该模式宽松,那么日期将以相当于在所请求的年份的第一个月的第一天创建日期的方式组合,然后加上月差,然后以周为单位,然后以天为单位。 如果模式是聪明或严格的,那么所有四个字段都将被验证到其外部范围。 然后将该日期以相当于在所请求的年和月的第一天创建日期的方式组合,然后以数周和数天的数量添加以达到其值。 如果模式严格,则还会验证日期,以检查日和周的调整次数是否不变。 -
YEAR
,MONTH_OF_YEAR
,ALIGNED_WEEK_OF_MONTH
和DAY_OF_WEEK
-如果所有四个都存在,则它们被组合以形成一个日期。 该方法与上述相同,多年,数月ALIGNED_DAY_OF_WEEK_IN_MONTH
周在ALIGNED_DAY_OF_WEEK_IN_MONTH
。 一天一个月,几周和几周已被处理,星期几被调整为下一个或相同的匹配日。 -
YEAR
,ALIGNED_WEEK_OF_YEAR
和ALIGNED_DAY_OF_WEEK_IN_YEAR
-如果所有三个都存在,那么它们被组合成一个日期。 在所有三种模式下,YEAR
都经过验证。 如果模式宽松,那么日期以相当于在所请求年的第一天创建日期的方式组合,然后以周为单位加上差异。 如果模式是聪明或严格的,那么所有三个字段都将被验证到其外部范围。 然后,该日期以相当于在所请求年的第一天创建日期的方式组合,然后以数周和数天添加以达到其值。 如果模式严格,日期也会被验证,以检查日和周的调整没有改变年份。 -
YEAR
,ALIGNED_WEEK_OF_YEAR
和DAY_OF_WEEK
-如果所有三个都存在,那么它们被组合成一个日期。 该方法与上述ALIGNED_DAY_OF_WEEK_IN_YEAR
数年ALIGNED_DAY_OF_WEEK_IN_YEAR
周ALIGNED_DAY_OF_WEEK_IN_YEAR
。 一天一周的时间一周调整为下一个或相同的匹配日期,一年的时间和周数被处理。
默认实现适用于大多数日历系统。 如果发现
ChronoField.YEAR_OF_ERA
没有ChronoField.ERA
,那么最后一个时代在Chronology.eras()
被使用。 实施假定为7天,第一个月的日期为1,第一天的值为1,并且月份和年份的第一个始终存在。- Specified by:
-
resolveDate
在接口Chronology
- 重写:
-
resolveDate
在AbstractChronology
- 参数
-
fieldValues
- 可以更新的值的字段映射,不为null -
resolverStyle
- 所请求的解析类型,不为空 - 结果
- 解决日期,如果信息不足创建日期,则为null
-
-
-