- 所有已实现的接口:
Serializable,Comparable<ChronoLocalDate>,ChronoLocalDate,Temporal,TemporalAccessor,TemporalAdjuster
该日期使用 回历 的几种变体之一进行操作。
Hijrah 日历一年中的总天数与 Gregorian 日历不同,每个月的长度基于月球绕地球完整公转的周期(如连续新月之间)。有关受支持变体的详细信息,请参阅 HijrahChronology 。
每个 HijrahDate 都被创建为绑定到一个特定的 HijrahChronology,相同的年表被传播到从日期计算的每个 HijrahDate。要使用不同的 Hijrah 变体,其 HijrahChronology 可用于创建新的 HijrahDate 实例。或者,withVariant(java.time.chrono.HijrahChronology) 方法可用于转换为新的 HijrahChronology。
这是一个value-based类;程序员应该将 equal 的实例视为可互换的,并且不应使用实例进行同步,否则可能会发生不可预测的行为。例如,在未来的版本中,同步可能会失败。 equals 方法应该用于比较。
- 实现要求:
- 这个类是不可变的和线程安全的。
- 自从:
- 1.8
- 参见:
-
方法总结
修饰符和类型方法描述final ChronoLocalDateTime<HijrahDate>将此日期与时间结合起来创建一个ChronoLocalDateTime。boolean将此日期与另一个日期进行比较,包括年表。static HijrahDatefrom(TemporalAccessor temporal) 从时间对象中获取伊斯兰 Umm Al-Qura 日历的HijrahDate。获取此日期的年表,即 Hijrah 日历系统。getEra()获取适用于该日期的纪元。longgetLong(TemporalField field) 获取指定字段的值作为long。inthashCode()此日期的哈希码。boolean根据 Hijrah 日历系统规则检查年份是否为闰年。int返回此日期表示的月份的长度。int返回此日期表示的年份的长度。minus(long amountToSubtract, TemporalUnit unit) 返回与此对象相同类型并减去指定句点的对象。minus(TemporalAmount amount) 返回与此对象相同类型的对象,但减去数量。static HijrahDatenow()获取默认时区中伊斯兰 Umm Al-Qura 日历的当前HijrahDate。static HijrahDate从指定时钟获取伊斯兰 Umm Al-Qura 日历的当前HijrahDate。static HijrahDate获取指定时区的伊斯兰 Umm Al-Qura 日历的当前HijrahDate。static HijrahDateof(int prolepticYear, int month, int dayOfMonth) 从 proleptic-year、month-of-year 和 day-of-month 字段中获取伊斯兰 Umm Al-Qura 日历的HijrahDate。plus(long amountToAdd, TemporalUnit unit) 返回与此对象相同类型的对象,并添加指定的时间段。plus(TemporalAmount amount) 返回与此对象相同类型的对象,并添加了数量。toString()返回对象的字符串表示形式。until(ChronoLocalDate endDate) 将此日期和另一个日期之间的时间段计算为ChronoPeriod。longuntil(Temporal endExclusive, TemporalUnit unit) 根据指定的单位计算到另一个日期的时间量。with(TemporalAdjuster adjuster) 返回与此对象具有相同类型并进行调整的调整对象。with(TemporalField field, long newValue) 返回与此对象相同类型的对象,但指定的字段已更改。withVariant(HijrahChronology chronology) 返回带有请求的年表的HijrahDate。在接口 java.time.chrono.ChronoLocalDate 中声明的方法
adjustInto, compareTo, format, isAfter, isBefore, isEqual, isSupported, isSupported, query, toEpochDay, toString, until在接口 java.time.temporal.TemporalAccessor 中声明的方法
get, range
-
方法详情
-
now
获取默认时区中伊斯兰 Umm Al-Qura 日历的当前HijrahDate。这将在默认时区查询
system clock以获取当前日期。使用此方法将阻止使用备用时钟进行测试的能力,因为时钟是硬编码的。
- 返回:
- 使用系统时钟和默认时区的当前日期,不为空
-
now
获取指定时区的伊斯兰 Umm Al-Qura 日历的当前HijrahDate。这将查询
system clock以获取当前日期。指定时区避免了对默认时区的依赖。使用此方法将阻止使用备用时钟进行测试的能力,因为时钟是硬编码的。
- 参数:
zone- 要使用的区域 ID,不为空- 返回:
- 使用系统时钟的当前日期,不为空
-
now
从指定时钟获取伊斯兰 Umm Al-Qura 日历的当前HijrahDate。这将查询指定的时钟以获取当前日期 - 今天。使用此方法允许使用备用时钟进行测试。可以使用 依赖注入 引入备用时钟。
- 参数:
clock- 使用的时钟,不为空- 返回:
- 当前日期,不为空
- 抛出:
DateTimeException- 如果无法获取当前日期
-
of
从 proleptic-year、month-of-year 和 day-of-month 字段中获取伊斯兰 Umm Al-Qura 日历的HijrahDate。这将返回具有指定字段的
HijrahDate。日期必须对年月有效,否则会抛出异常。- 参数:
prolepticYear- 回历预兆年month- 回历月份,从 1 到 12dayOfMonth- Hijrah 日期,从 1 到 30- 返回:
- Hijrah 日历系统中的日期,不为空
- 抛出:
DateTimeException- 如果任何字段的值超出范围,或者如果日期对于月份 - 年份无效
-
from
从时间对象中获取伊斯兰 Umm Al-Qura 日历的HijrahDate。这将根据指定的时间获取 Hijrah 日历系统中的日期。
TemporalAccessor表示一组任意的日期和时间信息,该工厂将其转换为HijrahDate的一个实例。转换通常使用跨日历系统标准化的
EPOCH_DAY字段。此方法与功能接口
TemporalQuery的签名相匹配,允许它通过方法引用HijrahDate::from用作查询。- 参数:
temporal- 要转换的时间对象,不为空- 返回:
- Hijrah 日历系统中的日期,不为空
- 抛出:
DateTimeException- 如果无法转换为HijrahDate- 参见:
-
getChronology
获取此日期的年表,即 Hijrah 日历系统。Chronology表示正在使用的日历系统。ChronoField中的时代和其他字段由年表定义。- 指定者:
getChronology在接口ChronoLocalDate中- 返回:
- Hijrah 年表,不为空
-
getEra
获取适用于该日期的纪元。Hijrah 日历系统有一个纪元“AH”,由
HijrahEra定义。- 指定者:
getEra在接口ChronoLocalDate中- 返回:
- 此日期适用的时代,不为空
-
lengthOfMonth
public int lengthOfMonth()返回此日期表示的月份的长度。这将以天为单位返回月份的长度。 Hijrah 日历系统中的月份长度在 29 到 30 天之间变化。
- 指定者:
lengthOfMonth在接口ChronoLocalDate中- 返回:
- 以天为单位的月份长度
-
lengthOfYear
public int lengthOfYear()返回此日期表示的年份的长度。这将以天为单位返回一年的长度。 Hijrah 日历系统年份通常比 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); // most key classes implement TemporalAdjuster date = date.with(lastDayOfMonth()); // static import from Adjusters date = date.with(next(WEDNESDAY)); // static import from Adjusters and DayOfWeek
- 指定者:
with在接口ChronoLocalDate中- 指定者:
with在接口Temporal中- 参数:
adjuster- 要使用的调节器,不为空- 返回:
- 进行了指定调整的同一类型的对象,不为空
- 抛出:
DateTimeException- 如果无法进行调整。例如,如果调节器需要 ISO 年表ArithmeticException- 如果发生数字溢出
-
withVariant
返回带有请求的年表的HijrahDate。根据新请求的 HijrahChronology 检查年、月和日。如果年表的月份长度较短,则该天将减少为该月的最后一天。
- 参数:
chronology- 新的 HijrahChonology,非空- 返回:
- 具有请求的 HijrahChronology 的 HijrahDate,非空
-
plus
返回与此对象相同类型的对象,并添加了数量。这会调整此时间,根据指定数量的规则添加。数量通常是
Period但可以是实现TemporalAmount接口的任何其他类型,例如Duration。一些示例代码指示如何以及为什么使用此方法:
date = date.plus(period); // add a Period instance date = date.plus(duration); // add a Duration instance date = date.plus(workingDays(6)); // example user-written workingDays method
请注意,调用
plus后跟minus不能保证返回相同的日期时间。- 指定者:
plus在接口ChronoLocalDate中- 指定者:
plus在接口Temporal中- 参数:
amount- 要添加的数量,不为空- 返回:
- 进行了指定调整的同一类型的对象,不为空
- 抛出:
DateTimeException- 如果无法添加ArithmeticException- 如果发生数字溢出
-
minus
返回与此对象相同类型的对象,但减去数量。这会调整此时间,根据指定数量的规则减去。数量通常是
Period但可以是实现TemporalAmount接口的任何其他类型,例如Duration。一些示例代码指示如何以及为什么使用此方法:
date = date.minus(period); // subtract a Period instance date = date.minus(duration); // subtract a Duration instance date = date.minus(workingDays(6)); // example user-written workingDays method
请注意,调用
plus后跟minus不能保证返回相同的日期时间。- 指定者:
minus在接口ChronoLocalDate中- 指定者:
minus在接口Temporal中- 参数:
amount- 要减去的金额,不为空- 返回:
- 进行了指定调整的同一类型的对象,不为空
- 抛出:
DateTimeException- 如果无法进行减法ArithmeticException- 如果发生数字溢出
-
isLeapYear
public boolean isLeapYear()根据 Hijrah 日历系统规则检查年份是否为闰年。- 指定者:
isLeapYear在接口ChronoLocalDate中- 返回:
- 如果此日期是闰年,则为真
-
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。这将计算两个日期之间的时间段。所有提供的年表都使用年、月和日计算周期,但是
ChronoPeriodAPI 允许使用其他单位表示周期。起点和终点是
this和指定的日期。如果结束早于开始,结果将为负。年、月、日的负号相同。使用该日期的年表进行计算。如有必要,输入的日期将被转换以匹配。
此实例是不可变的,不受此方法调用的影响。
- 指定者:
until在接口ChronoLocalDate中- 参数:
endDate- 结束日期,唯一的,可以按任何时间顺序排列,不为空- 返回:
- 此日期和结束日期之间的时间段,不为空
-
equals
将此日期与另一个日期进行比较,包括年表。将此
HijrahDate与另一个进行比较,确保日期相同。只比较
HijrahDate类型的对象,其他类型返回 false。要比较两个TemporalAccessor实例的日期,包括两个不同年表中的日期,请使用ChronoField.EPOCH_DAY作为比较器。- 指定者:
equals在接口ChronoLocalDate中- 参数:
obj- 要检查的对象,null 返回 false- 返回:
- 如果这等于另一个日期并且年表相等,则为真
- 参见:
-
hashCode
public int hashCode()此日期的哈希码。- 指定者:
hashCode在接口ChronoLocalDate中- 返回:
- 仅基于年表和日期的合适哈希码
- 参见:
-
until
从接口ChronoLocalDate复制的描述根据指定的单位计算到另一个日期的时间量。这根据单个
TemporalUnit计算两个ChronoLocalDate对象之间的时间量。起点和终点是this和指定的日期。如果结束早于开始,结果将为负。传递给此方法的Temporal使用Chronology.date(TemporalAccessor)转换为ChronoLocalDate。计算返回一个整数,表示两个日期之间的完整单位数。例如,可以使用startDate.until(endDate, DAYS)计算两个日期之间的天数。有两种等效的方法可以使用此方法。第一个是调用这个方法。第二种是使用
TemporalUnit.between(Temporal, Temporal):// these two lines are equivalent 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中- 返回:
- 对象的字符串表示形式。
-