public final class HijrahChronology extends AbstractChronology implements Serializable
的hijrahchronology遵循迁徙的日历系统规则。迁徙的日历有几个变种的基础上的差异,当新月确定已经发生并在观察了。在一些版本的每个月的长度计算的算法从地球和月球的天文数据和其他一个月的长度是由新月观测确定授权。该算法基于日历的日历可以预测未来。瞄准从过去看到日历仅基于历史数据是可用的。
每个月的长度是29或30天。普通年有354天,有355天,有天。
CLDR和LDML确定变种:
Chronology ID | Calendar Type | Locale extension, see Locale |
描述 |
---|---|---|---|
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”)。例如,
现场现场现场=。forlanguagetag(“en-us-u-ca-islamic-umalqura”);时辰=年表年表。oflocale(现场);
ID
,定义的
calendar type
,日历的开始,与ISO日历的排列,和一系列的年每个月的长度。该变种在
calendars.properties
文件鉴定。新的特性都是以
"calendars.hijrah."
:
Property Name | Property value | 描述 |
---|---|---|
calendars.hijrah.{ID} | The property resource defining the {ID} variant |
The property resource is located with the calendars.properties file |
calendars.hijrah.{ID}.type | The calendar type | LDML defines the calendar type names |
迁徙性资源是一组描述日历属性。语法定义的java.util.Properties#load(Reader)
。
Property Name | Property value | 描述 |
---|---|---|
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 as 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. |
Modifier and Type | Field and Description |
---|---|
static HijrahChronology |
INSTANCE
在伊斯兰乌姆Qura日历沙特阿拉伯单实例。
|
Modifier and Type | Method and Description |
---|---|
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()
获取时间顺序的标识。
|
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)
得到此年表
ChronoZonedDateTime 来自另一个时空对象。
|
compareTo, equals, hashCode, toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
from, getDisplayName, period
public static final HijrahChronology INSTANCE
Chronology.getAvailableChronologies()
。
public String getId()
ID唯一地标识Chronology
。它可以用来查找Chronology
使用AbstractChronology.of(String)
。
getId
接口
Chronology
getCalendarType()
public String getCalendarType()
日历类型标识符由Unicode现场数据定义的标记语言(LDML)规范。它可以用来查找Chronology
使用AbstractChronology.of(String)
。
getCalendarType
接口
Chronology
getId()
public HijrahDate date(Era era, int yearOfEra, int month, int dayOfMonth)
date
接口
Chronology
era
迁徙的时代,不为空
yearOfEra
-时代的一年
month
-年月
dayOfMonth
-月日
DateTimeException
如果无法创建日期
ClassCastException
-如果
era
不是
HijrahEra
public HijrahDate date(int prolepticYear, int month, int dayOfMonth)
date
接口
Chronology
prolepticYear
-预期年
month
-年月
dayOfMonth
-月日
DateTimeException
如果无法创建日期
public HijrahDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
dateYearDay
接口
Chronology
era
迁徙的时代,不为空
yearOfEra
-时代的一年
dayOfYear
-
DateTimeException
如果无法创建日期
ClassCastException
-如果
era
不是
HijrahEra
public HijrahDate dateYearDay(int prolepticYear, int dayOfYear)
dateYearDay
接口
Chronology
prolepticYear
-预期年
dayOfYear
-每年的这一天
DateTimeException
如果每年的值超出范围,或如果每年的这一天的一年是无效的
public HijrahDate dateEpochDay(long epochDay)
dateEpochDay
接口
Chronology
epochDay
-
DateTimeException
如果无法创建日期
public HijrahDate dateNow()
Chronology
这将查询system clock
在默认时区获取当前日期。
使用这种方法将防止使用另一个时钟进行测试的能力,因为时钟是硬编码的。
dateNow
接口
Chronology
public HijrahDate dateNow(ZoneId zone)
Chronology
这将查询system clock
获取当前日期。指定时区避免依赖于默认时区。
使用这种方法将防止使用另一个时钟进行测试的能力,因为时钟是硬编码的。
dateNow
接口
Chronology
zone
-区ID使用,不为空
public HijrahDate dateNow(Clock clock)
Chronology
这将查询指定的时钟,以获得当前日期-今天。使用这种方法允许使用一个备用时钟进行测试。备用时钟可采用dependency injection
。
dateNow
接口
Chronology
clock
-时钟使用,不为空
public HijrahDate date(TemporalAccessor temporal)
Chronology
这获得一个日期,在此基础上指定的时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以ChronoLocalDate
实例。
转换通常用EPOCH_DAY
领域,这是标准化的日历系统。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询的签名,aChronology::date
。
date
接口
Chronology
temporal
-转换时间的对象,不为空
ChronoLocalDate.from(TemporalAccessor)
public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
Chronology
这在这个时间根据指定的时间来获得一个日期时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以ChronoLocalDateTime
实例。
转换提取物结合ChronoLocalDate
从时空对象的LocalTime
。实现允许执行优化,如访问这些字段,这些字段相当于相关对象。结果使用这个年代。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询的签名,aChronology::localDateTime
。
localDateTime
接口
Chronology
temporal
-转换时间的对象,不为空
ChronoLocalDateTime.from(TemporalAccessor)
public ChronoZonedDateTime<HijrahDate> zonedDateTime(TemporalAccessor temporal)
Chronology
ChronoZonedDateTime
来自另一个时空对象。
这获得一个分区的日期时间,在此基础上指定的时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以ChronoZonedDateTime
实例。
转换将首先从时态对象获得ZoneId
,回落到一个ZoneOffset
如果必要。然后它会试图获得一个Instant
,回落到ChronoLocalDateTime
如果必要。结果将是结合ZoneId
或ZoneOffset
与Instant
或ChronoLocalDateTime
。实现被允许执行的优化如访问这些字段,相当于为相关对象。结果使用这个年代。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询的签名,aChronology::zonedDateTime
。
zonedDateTime
接口
Chronology
temporal
-转换时间的对象,不为空
ChronoZonedDateTime.from(TemporalAccessor)
public ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone)
Chronology
Instant
这一
ChronoZonedDateTime
年表。
这获得一个分区的日期时间与指定的相同的时间。
zonedDateTime
接口
Chronology
instant
-创建日期时间的瞬间,不为空
zone
的时区,不空
public boolean isLeapYear(long prolepticYear)
Chronology
一个跨越是一年比一个更长的长度比正常。确切的意义是根据以下约束条件确定的。
isLeapYear
接口
Chronology
prolepticYear
-检查预期的一年,距离没有验证
public int prolepticYear(Era era, int yearOfEra)
Chronology
本文结合时代和年时代为单预期年场。
如果时间使时代的积极利用,如JapaneseChronology
然后时代的年会与时代的验证。其他的年表,验证是可选的。
prolepticYear
接口
Chronology
era
-为年表正确类型的时代,不为空
yearOfEra
-时代年表年
public HijrahEra eraOf(int eraValue)
Chronology
时代是,从概念上说,最大的划分的时间线。大多数日历系统有一个单一的时代划分的时间线分为两个时代。然而,有些人有多个时代,如一个为每个领导人的统治。确切的意义是根据以下约束条件确定的。
在使用中必须1970-01-01时代价值1。后来的时代必须有更高的价值。早期时代必须有顺序较低的价值观。每个年代必须引用枚举或类似的独生子女提供的时代价值。
此方法返回指定时代值的正确类型的单例时代。
eraOf
接口
Chronology
eraValue
的时代价值
public List<Era> eras()
Chronology
大多数日历系统都有一个时代,在这一年内有意义。如果日历系统不支持“时代”的概念,则必须返回一个空列表。
eras
接口
Chronology
public ValueRange range(ChronoField field)
Chronology
所有字段可以表示为一个long
整数。此方法返回一个对象,该对象描述该值的有效范围。
请注意,结果只描述了最小值和最大值的有效值,重要的是不要对它们进行太多的阅读。例如,可能在字段无效的范围内的值。
这种方法将返回一个结果,是否年代支持该字段。
range
接口
Chronology
field
-现场得到的范围,不为空
public HijrahDate resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
AbstractChronology
ChronoField
值解析到日期在解析。
最TemporalField
实现使用解决方法在现场解决。相比之下,在ChronoField
类定义,只有相对的意义领域的年表。因此,ChronoField
日期字段的解决在特定年代的语境。
ChronoField
实例都通过这种方法解决,可以在子类中重写。
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
月份和星期。每周一次的一天调整为下一个或相同的一周,几年,几个月和几周的时间已被处理。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
年周相同。每周一次的一天调整为下一个或同一个星期一次的一周,几周和几周已经处理好了。默认实现是适用于大多数日历系统。如果ChronoField.YEAR_OF_ERA
发现没有ChronoField.ERA
然后在Chronology.eras()
过去时代用。执行假设一个7天的一周,即每月的第一天有价值1,第一天的一年有价值1,而第一个月和一年总是存在。
resolveDate
接口
Chronology
resolveDate
方法重写,继承类
AbstractChronology
fieldValues
-字段值的Map,可以更新,不为空
resolverStyle
-解决请求的类型,不为空
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.