- 所有已实现的接口:
-
Serializable
,Comparable<ChronoLocalDate>
,ChronoLocalDate
,Temporal
,TemporalAccessor
,TemporalAdjuster
此日期使用伊斯兰历的几种变体之一运行。
伊斯兰历的一年总天数与公历不同,每个月的长度基于月亮绕地球的完整旋转周期(即连续两次新月之间的时间)。有关支持的变体的详细信息,请参阅HijrahChronology
。
每个HijrahDate都绑定到特定的HijrahChronology,从日期计算出的每个HijrahDate都传播相同的年表。要使用不同的Hijrah变体,可以使用其HijrahChronology创建新的HijrahDate实例。或者,可以使用withVariant(java.time.chrono.HijrahChronology)
方法转换为新的HijrahChronology。
这是一个基于值的类;程序员应将相等的实例视为可互换的,并且不应将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。应使用equals
方法进行比较。
- 实现要求:
- 此类是不可变的且线程安全的。
- 自:
- 1.8
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptionfinal ChronoLocalDateTime
<HijrahDate> 将此日期与时间组合以创建ChronoLocalDateTime
。boolean
将此日期与另一个日期进行比较,包括年表。static HijrahDate
from
(TemporalAccessor temporal) 从时间对象获取伊斯兰乌姆盖斯日历的HijrahDate
。获取此日期的年表,即伊斯兰历系统。getEra()
获取适用于此日期的纪元。long
getLong
(TemporalField field) 获取指定字段的值作为long
。int
hashCode()
此日期的哈希码。boolean
根据伊斯兰历系统的规则检查年份是否为闰年。int
返回此日期表示的月份的长度。int
返回此日期表示的年份的长度。minus
(long amountToSubtract, TemporalUnit unit) 返回与指定周期减去的相同类型的对象。minus
(TemporalAmount amount) 返回与指定金额减去的相同类型的对象。static HijrahDate
now()
在默认时区获取伊斯兰乌姆盖斯日历的当前HijrahDate
。static HijrahDate
从指定时钟获取伊斯兰乌姆盖斯日历的当前HijrahDate
。static HijrahDate
在指定时区获取伊斯兰乌姆盖斯日历的当前HijrahDate
。static HijrahDate
of
(int prolepticYear, int month, int dayOfMonth) 从指定的proleptic-year、month-of-year和day-of-month字段获取伊斯兰乌姆盖斯日历的HijrahDate
。plus
(long amountToAdd, TemporalUnit unit) 返回与指定周期添加的相同类型的对象。plus
(TemporalAmount amount) 返回与指定金额添加的相同类型的对象。toString()
返回对象的字符串表示形式。until
(ChronoLocalDate endDate) 计算此日期与另一个日期之间的周期作为ChronoPeriod
。long
until
(Temporal endExclusive, TemporalUnit unit) 根据指定单位计算直到另一个日期的时间量。with
(TemporalAdjuster adjuster) 返回进行了调整的与此对象相同类型的对象。with
(TemporalField field, long newValue) 返回进行了指定字段更改的与此对象相同类型的对象。withVariant
(HijrahChronology chronology) 返回具有请求的年表的HijrahDate
。Methods declared in class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods declared in interface java.time.chrono.ChronoLocalDate
adjustInto, compareTo, format, isAfter, isBefore, isEqual, isSupported, isSupported, query, toEpochDay, toString, until
Methods declared in interface java.time.temporal.TemporalAccessor
get, range
-
Method Details
-
now
- 返回:
- 使用系统时钟和默认时区的当前日期,不为null
-
now
- 参数:
-
zone
- 要使用的区域ID,不为null - 返回:
- 使用系统时钟的当前日期,不为null
-
now
从指定时钟获取伊斯兰乌姆盖斯日历的当前HijrahDate
。这将查询指定的时钟以获取当前日期-今天。使用此方法允许使用替代时钟进行测试。可以使用依赖注入引入替代时钟。
- 参数:
-
clock
- 要使用的时钟,不为null - 返回:
- 当前日期,不为null
- 抛出:
-
DateTimeException
- 如果无法获取当前日期
-
of
从proleptic-year、month-of-year和day-of-month字段获取伊斯兰乌姆盖斯日历的HijrahDate
。此方法返回具有指定字段的
HijrahDate
。该日必须对该年和月有效,否则将抛出异常。- 参数:
-
prolepticYear
- 伊斯兰历的proleptic年份 -
month
- 伊斯兰月份,从1到12 -
dayOfMonth
- 伊斯兰每月的日期,从1到30 - 返回:
- 伊斯兰历系统中的日期,不为null
- 抛出:
-
DateTimeException
- 如果任何字段的值超出范围,或者日期不适用于该月份
-
from
从时间对象获取伊斯兰乌姆盖斯日历的HijrahDate
。根据指定的时间获取伊斯兰历系统中的日期。
TemporalAccessor
表示一组任意的日期和时间信息,此工厂将其转换为HijrahDate
的实例。转换通常使用
EPOCH_DAY
字段,该字段在各种日历系统中标准化。此方法与函数接口
TemporalQuery
的签名匹配,允许通过方法引用HijrahDate::from
使用它作为查询。- 参数:
-
temporal
- 要转换的时间对象,不为null - 返回:
- 伊斯兰历系统中的日期,不为null
- 抛出:
-
DateTimeException
- 如果无法转换为HijrahDate
-
getChronology
获取此日期的年表,即伊斯兰历系统。Chronology
表示正在使用的日历系统。年代和其他字段在ChronoField
中由年表定义。- 指定者:
-
getChronology
在接口ChronoLocalDate
中 - 返回:
- 伊斯兰历年表,不为null
-
getEra
获取适用于此日期的纪元。伊斯兰历系统有一个纪元,'AH',由
HijrahEra
定义。- 指定者:
-
getEra
在接口ChronoLocalDate
中 - 返回:
- 适用于此日期的纪元,不为null
-
lengthOfMonth
public int lengthOfMonth()返回此日期表示的月份的长度。返回月份的天数长度。伊斯兰历系统中的月份长度在29和30天之间变化。
- 指定者:
-
lengthOfMonth
在接口ChronoLocalDate
中 - 返回:
- 月份的天数长度
-
lengthOfYear
public int lengthOfYear()返回此日期表示的年份的长度。返回年份的天数长度。伊斯兰历系统的一年通常比ISO历法系统的年份短。
- 指定者:
-
lengthOfYear
在接口ChronoLocalDate
中 - 返回:
- 年份的天数长度
-
getLong
从接口复制的描述:TemporalAccessor
获取指定字段的值作为long
。此方法查询日期时间的指定字段的值。返回的值可能超出字段的有效值范围。如果日期时间无法返回该值,因为该字段不受支持或出于其他原因,将抛出异常。
- 指定者:
-
getLong
在接口TemporalAccessor
- 参数:
-
field
- 要获取的字段,不能为空 - 返回:
- 字段的值
-
with
从接口复制的描述:ChronoLocalDate
返回与指定字段更改后的相同类型的对象。根据指定字段更改此对象,返回基于此对象的新对象。例如,在
LocalDate
上,可以用于设置年、月或日。返回的对象将具有与此对象相同的可观察类型。在某些情况下,更改字段未完全定义。例如,如果目标对象是代表1月31日的日期,则将月份更改为2月将是不明确的。在这种情况下,字段负责解析结果。通常它将选择前一个有效日期,例如在此示例中将是2月的最后一个有效日期。
- 指定者:
-
with
在接口ChronoLocalDate
- 指定者:
-
with
在接口Temporal
- 参数:
-
field
- 要在结果中设置的字段,不能为空 -
newValue
- 结果中字段的新值 - 返回:
- 具有指定字段设置的相同类型的对象,不能为空
-
with
返回根据调整器规则进行调整的相同类型的对象。根据指定调整器的规则调整此日期时间。简单的调整器可能只是设置一个字段,例如年字段。更复杂的调整器可能将日期设置为月份的最后一天。在
TemporalAdjusters
中提供了一些常见的调整选项。这些包括查找“月份的最后一天”和“下周三”。调整器负责处理特殊情况,例如月份的长度和闰年。以下是一些示例代码,说明此方法的使用方式和原因:
date = date.with(Month.JULY); // 大多数关键类实现TemporalAdjuster date = date.with(lastDayOfMonth()); // 从Adjusters进行静态导入 date = date.with(next(WEDNESDAY)); // 从Adjusters和DayOfWeek进行静态导入
- 指定者:
-
with
在接口ChronoLocalDate
- 指定者:
-
with
在接口Temporal
- 参数:
-
adjuster
- 要使用的调整器,不能为空 - 返回:
- 具有指定调整的相同类型的对象,不能为空
- 抛出:
-
DateTimeException
- 如果无法进行调整。例如,如果调整器需要ISO年表 -
ArithmeticException
- 如果发生数值溢出
-
withVariant
返回具有请求的年表的HijrahDate
。年、月和日将根据新请求的HijrahChronology进行检查。如果该年表对应月份有较短的月长度,则日期将减少为该月的最后一天。
- 参数:
-
chronology
- 新的HijrahChonology,非空 - 返回:
- 具有请求的HijrahChronology的HijrahDate,非空
-
plus
返回具有添加的数量的相同类型的对象。根据指定数量的规则调整此时间,添加。数量通常是一个
Period
,但也可以是实现TemporalAmount
接口的任何其他类型,例如Duration
。以下是一些示例代码,说明此方法的使用方式和原因:
date = date.plus(period); // 添加一个Period实例 date = date.plus(duration); // 添加一个Duration实例 date = date.plus(workingDays(6)); // 示例用户编写的workingDays方法
请注意,调用
plus
后跟minus
不能保证返回相同的日期时间。- 指定者:
-
plus
在接口ChronoLocalDate
- 指定者:
-
plus
在接口Temporal
- 参数:
-
amount
- 要添加的数量,不能为空 - 返回:
- 具有指定调整的相同类型的对象,不能为空
- 抛出:
-
DateTimeException
- 如果无法进行添加 -
ArithmeticException
- 如果发生数值溢出
-
minus
返回具有减去的数量的相同类型的对象。根据指定数量的规则调整此时间,减去。数量通常是一个
Period
,但也可以是实现TemporalAmount
接口的任何其他类型,例如Duration
。以下是一些示例代码,说明此方法的使用方式和原因:
date = date.minus(period); // 减去一个Period实例 date = date.minus(duration); // 减去一个Duration实例 date = date.minus(workingDays(6)); // 示例用户编写的workingDays方法
请注意,调用
plus
后跟minus
不能保证返回相同的日期时间。- 指定者:
-
minus
在接口ChronoLocalDate
- 指定者:
-
minus
在接口Temporal
- 参数:
-
amount
- 要减去的数量,不能为空 - 返回:
- 具有指定调整的相同类型的对象,不能为空
- 抛出:
-
DateTimeException
- 如果无法进行减去 -
ArithmeticException
- 如果发生数值溢出
-
isLeapYear
public boolean isLeapYear()检查年份是否根据Hijrah日历系统规则为闰年。- 指定者:
-
isLeapYear
在接口ChronoLocalDate
- 返回:
- 如果此日期在闰年中,则为true
-
plus
从接口复制的描述:ChronoLocalDate
返回具有添加指定期间的相同类型的对象。此方法返回基于此对象的新对象,其中添加了指定的期间。例如,在
LocalDate
上,可以用于添加一定数量的年、月或日。返回的对象将具有与此对象相同的可观察类型。在某些情况下,更改字段未完全定义。例如,如果目标对象是代表1月31日的日期,则添加一个月将是不明确的。在这种情况下,字段负责解析结果。通常它将选择前一个有效日期,例如在此示例中将是2月的最后一个有效日期。
- 指定由:
-
plus
在接口ChronoLocalDate
- 指定由:
-
plus
在接口Temporal
- 参数:
-
amountToAdd
- 要添加的指定单位的数量,可以为负数 -
unit
- 要添加的数量的单位,不能为空 - 返回:
- 添加了指定周期的相同类型对象,不能为空
-
minus
从接口复制的描述:ChronoLocalDate
返回与此对象相同类型的对象,减去了指定的周期。此方法返回基于此对象的新对象,减去了指定的周期。例如,在
LocalDate
上,可以用来减去一定数量的年、月或天数。返回的对象将具有与此对象相同的可观察类型。在某些情况下,更改字段的定义不完全。例如,如果目标对象是代表3月31日的日期,则减去一个月将是不明确的。在这种情况下,字段负责解析结果。通常它将选择前一个有效日期,例如在此示例中将是2月的最后一个有效日期。
- 指定由:
-
minus
在接口ChronoLocalDate
- 指定由:
-
minus
在接口Temporal
- 参数:
-
amountToSubtract
- 要减去的指定单位的数量,可以为负数 -
unit
- 要减去的数量的单位,不能为空 - 返回:
- 减去了指定周期的相同类型对象,不能为空
-
atTime
从接口复制的描述:ChronoLocalDate
将此日期与时间组合以创建一个ChronoLocalDateTime
。返回从此日期在指定时间形成的
ChronoLocalDateTime
。所有日期和时间的可能组合都是有效的。- 指定由:
-
atTime
在接口ChronoLocalDate
- 参数:
-
localTime
- 要使用的本地时间,不能为空 - 返回:
- 从此日期和指定时间形成的本地日期时间,不能为空
-
until
从接口复制的描述:ChronoLocalDate
计算此日期与另一个日期之间的周期作为ChronoPeriod
。计算两个日期之间的周期。所有提供的年表都使用年、月和日计算周期,但是
ChronoPeriod
API允许使用其他单位表示周期。起始点和结束点是
this
和指定的日期。如果结束在开始之前,则结果将为负数。年、月和日中的负号将相同。计算是使用此日期的年表执行的。如果需要,输入日期将被转换以匹配。
此实例是不可变的,并且不受此方法调用的影响。
- 指定由:
-
until
在接口ChronoLocalDate
- 参数:
-
endDate
- 结束日期(不包括),可以是任何年表,不能为空 - 返回:
- 此日期与结束日期之间的周期,不能为空
-
equals
比较此日期与另一个日期,包括年表。比较此
HijrahDate
与另一个确保日期相同。仅比较
HijrahDate
类型的对象,其他类型返回false。要比较两个TemporalAccessor
实例的日期,包括两个不同年表中的日期,请使用ChronoField.EPOCH_DAY
作为比较器。- 指定由:
-
equals
在接口ChronoLocalDate
- 参数:
-
obj
- 要检查的对象,null返回false - 返回:
- 如果此日期等于另一个日期且年表相等,则为true
- 参见:
-
hashCode
public int hashCode()此日期的哈希码。- 指定由:
-
hashCode
在接口ChronoLocalDate
- 返回:
- 基于年表和日期的适当哈希码
- 参见:
-
until
从类复制的描述:Object
计算与另一个日期之间的时间量,以指定单位。以单个
TemporalUnit
单位计算两个ChronoLocalDate
对象之间的时间量。起始点和结束点是this
和指定的日期。如果结束在开始之前,则结果将为负数。传递给此方法的Temporal
将使用Chronology.date(TemporalAccessor)
转换为ChronoLocalDate
。计算返回一个整数,表示两个日期之间完整单位的数量。例如,可以使用startDate.until(endDate, DAYS)
来计算两个日期之间的天数。有两种等效的使用方法。第一种是调用此方法。第二种是使用
TemporalUnit.between(Temporal, Temporal)
:// 这两行是等效的 amount = start.until(end, MONTHS); amount = MONTHS.between(start, end);
应根据哪种方法使代码更易读来进行选择。此方法为
ChronoUnit
实现了计算。单位DAYS
、WEEKS
、MONTHS
、YEARS
、DECADES
、CENTURIES
、MILLENNIA
和ERAS
应该由所有实现支持。其他ChronoUnit
值将抛出异常。如果单位不是
ChronoUnit
,则通过调用TemporalUnit.between(Temporal, Temporal)
来获得此方法的结果,将this
作为第一个参数传递,将转换后的输入时间作为第二个参数传递。此实例是不可变的,并且不受此方法调用的影响。
- 指定由:
-
until
在接口ChronoLocalDate
- 指定由:
-
until
在接口Temporal
- 参数:
-
endExclusive
- 结束日期(不包括),将转换为相同年表中的ChronoLocalDate
,不能为空 -
unit
- 用于测量时间量的单位,不能为空 - 返回:
- 此日期与结束日期之间的时间量
-
toString
从类复制的描述:Object
返回对象的字符串表示形式。- 指定由:
-
toString
在接口ChronoLocalDate
- 覆盖:
-
toString
在类Object
- 返回:
- 对象的字符串表示形式。
-