- java.lang.Object
-
- java.time.chrono.HijrahDate
-
- 实现的所有接口
-
Serializable
,Comparable<ChronoLocalDate>
,ChronoLocalDate
,Temporal
,TemporalAccessor
,TemporalAdjuster
public final class HijrahDate extends Object implements ChronoLocalDate, Serializable
Hijrah日历系统中的日期。此日期使用Hijrah calendar的多个变体之一进行操作 。
Hijrah日历在一年中的总天数与公历不同,每个月的长度基于月球绕地球完全旋转的时期(在连续的新卫星之间)。 有关支持的变体的详细信息,请参阅
HijrahChronology
。每个HijrahDate都创建绑定到特定的HijrahChronology,相同的年表传播到从日期计算的每个HijrahDate。 要使用不同的Hijrah变体,可以使用其HijrahChronology创建新的HijrahDate实例。 或者,可以使用
withVariant(java.time.chrono.HijrahChronology)
方法转换为新的HijrahChronology。这是一个value-based班; 在
HijrahDate
实例上使用身份敏感操作(包括引用相等(==
),标识哈希码或同步)可能会产生不可预测的结果,应该避免使用。 应使用equals
方法进行比较。- 实现要求:
- 这个类是不可变的和线程安全的。
- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
equals(Object obj)
将此日期与另一个日期进行比较,包括年表。static HijrahDate
from(TemporalAccessor temporal)
从时间对象获得伊斯兰教Umm Al-Qura日历的HijrahDate
。HijrahChronology
getChronology()
获取此日期的年表,即Hijrah日历系统。HijrahEra
getEra()
获取此日期适用的时代。int
hashCode()
此日期的哈希码。boolean
isLeapYear()
根据Hijrah日历系统规则,检查年份是否为闰年。int
lengthOfMonth()
返回此日期表示的月份长度。int
lengthOfYear()
返回此日期表示的年份长度。HijrahDate
minus(TemporalAmount amount)
返回与此对象相同类型的对象,并减去一定量。static HijrahDate
now()
在默认时区中获得伊斯兰Umm Al-Qura日历的当前HijrahDate
。static HijrahDate
now(Clock clock)
从指定时钟获得伊斯兰Umm Al-Qura日历的当前HijrahDate
。static HijrahDate
now(ZoneId zone)
获得指定时区内伊斯兰教Umm Al-Qura日历的当前HijrahDate
。static HijrahDate
of(int prolepticYear, int month, int dayOfMonth)
从预产期,月份和日期字段中获得伊斯兰Umm Al-Qura日历的HijrahDate
。HijrahDate
plus(TemporalAmount amount)
返回与此对象相同类型的对象,并添加一个量。String
toString()
返回对象的字符串表示形式。long
until(Temporal endExclusive, TemporalUnit unit)
根据指定的单位计算到另一个日期的时间量。HijrahDate
with(TemporalAdjuster adjuster)
返回与此对象相同类型的调整对象,并进行调整。HijrahDate
withVariant(HijrahChronology chronology)
返回请求年表的HijrahDate
。-
声明方法的接口 java.time.chrono.ChronoLocalDate
adjustInto, atTime, compareTo, format, isAfter, isBefore, isEqual, isSupported, isSupported, minus, plus, query, toEpochDay, toString, until, until, with
-
声明方法的接口 java.time.temporal.TemporalAccessor
get, getLong, range
-
-
-
-
方法详细信息
-
now
public static HijrahDate now()
在默认时区中获得伊斯兰Umm Al-Qura日历的当前HijrahDate
。这将在默认时区中查询
system clock
以获取当前日期。使用此方法将无法使用备用时钟进行测试,因为时钟是硬编码的。
- 结果
- 使用系统时钟和默认时区的当前日期,不为空
-
now
public static HijrahDate now(ZoneId zone)
获得当前在指定时区内的伊斯兰教Umm Al-Qura日历的HijrahDate
。这将查询
system clock
以获取当前日期。 指定时区可避免依赖于默认时区。使用此方法将无法使用备用时钟进行测试,因为时钟是硬编码的。
- 参数
-
zone
- 要使用的区域ID,不为空 - 结果
- 使用系统时钟的当前日期,不为空
-
now
public static HijrahDate now(Clock clock)
从指定时钟获得伊斯兰Umm Al-Qura日历的当前HijrahDate
。这将查询指定的时钟以获取当前日期 - 今天。 使用此方法允许使用备用时钟进行测试。 可以使用dependency injection引入备用时钟。
- 参数
-
clock
- 要使用的时钟,不为空 - 结果
- 当前日期,不为空
- 异常
-
DateTimeException
- 如果无法获得当前日期
-
of
public static HijrahDate of(int prolepticYear, int month, int dayOfMonth)
从预产期,月份和日期字段中获得伊斯兰Umm Al-Qura日历的HijrahDate
。这将返回带有指定字段的
HijrahDate
。 该日必须对年和月有效,否则将抛出异常。- 参数
-
prolepticYear
- HijrahprolepticYear
年 -
month
- Hijrah月份,从1到12 -
dayOfMonth
- Hijrah日期,从1到30 - 结果
- Hijrah日历系统中的日期,不为空
- 异常
-
DateTimeException
- 如果任何字段的值超出范围,或者月份的月份无效
-
from
public static HijrahDate from(TemporalAccessor temporal)
从时间对象获得伊斯兰Umm Al-Qura日历的HijrahDate
。这基于指定的时间在Hijrah日历系统中获得日期。
TemporalAccessor
表示一组任意日期和时间信息,该工厂将其转换为HijrahDate
的实例。转换通常使用
EPOCH_DAY
字段,该字段在日历系统中标准化。该方法匹配功能接口
TemporalQuery
的签名,允许其通过方法参考HijrahDate::from
用作查询。- 参数
-
temporal
- 要转换的临时对象,而不是null - 结果
- Hijrah日历系统中的日期,不为空
- 异常
-
DateTimeException
- 如果无法转换为HijrahDate
- 另请参见:
-
Chronology.date(TemporalAccessor)
-
getChronology
public HijrahChronology getChronology()
获取此日期的年表,即Hijrah日历系统。Chronology
表示正在使用的日历系统。ChronoField
中的时代和其他领域由年表定义。- Specified by:
-
getChronology
in interfaceChronoLocalDate
- 结果
- Hijrah年表,不是空的
-
getEra
public HijrahEra getEra()
获取此日期适用的时代。Hijrah日历系统有一个时代,'AH',由
HijrahEra
定义。- Specified by:
-
getEra
in interfaceChronoLocalDate
- 结果
- 适用于此日期的时代,不为空
-
lengthOfMonth
public int lengthOfMonth()
返回此日期表示的月份长度。这将返回以天为单位的月份长度。 Hijrah日历系统的月长在29到30天之间变化。
- Specified by:
-
lengthOfMonth
in interfaceChronoLocalDate
- 结果
- 以天为单位的月份长度
-
lengthOfYear
public int lengthOfYear()
返回此日期表示的年份长度。这将返回以年为单位的年份长度。 Hijrah日历系统年通常比ISO日历系统短。
- Specified by:
-
lengthOfYear
in interfaceChronoLocalDate
- 结果
- 以天为单位的年份长度
-
with
public HijrahDate with(TemporalAdjuster adjuster)
返回与此对象相同类型的调整对象,并进行调整。这将根据指定调整程序的规则调整此日期时间。 简单的调整器可能只是设置其中一个字段,例如年份字段。 更复杂的调整器可能会将日期设置为该月的最后一天。
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
- Specified by:
-
with
在界面ChronoLocalDate
- Specified by:
-
with
in interfaceTemporal
- 参数
-
adjuster
- 要使用的调整器,不为null - 结果
- 具有指定调整的相同类型的对象,而不是null
- 异常
-
DateTimeException
- 如果无法进行调整。 例如,如果调整器需要ISO年表 -
ArithmeticException
- 如果发生数字溢出
-
withVariant
public HijrahDate withVariant(HijrahChronology chronology)
返回HijrahDate
其中包含要求的年表。根据新请求的HijrahChronology检查年,月和日。 如果年表的月份长度较短,则该日期将减少为该月的最后一天。
- 参数
-
chronology
- 新的HijrahChonology,非null - 结果
- 带有所请求的HijrahChronology的HijrahDate,非空
-
plus
public HijrahDate plus(TemporalAmount amount)
返回与此对象相同类型的对象,并添加一个量。这会调整此时间,根据指定数量的规则添加。 该数量通常为
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
不能保证返回相同的日期时间。- Specified by:
-
plus
in interfaceChronoLocalDate
- Specified by:
-
plus
在界面Temporal
- 参数
-
amount
- 要添加的金额,而不是空 - 结果
- 具有指定调整的相同类型的对象,而不是null
- 异常
-
DateTimeException
- 如果无法添加 -
ArithmeticException
- 如果发生数字溢出
-
minus
public HijrahDate minus(TemporalAmount amount)
返回与此对象相同类型的对象,并减去一定量。这会调整此时间,根据指定数量的规则减去。 该数量通常为
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
返回相同的日期时间。- Specified by:
-
minus
在界面ChronoLocalDate
- Specified by:
-
minus
in interfaceTemporal
- 参数
-
amount
- 要减去的金额,而不是空 - 结果
- 具有指定调整的相同类型的对象,而不是null
- 异常
-
DateTimeException
- 如果无法进行减法 -
ArithmeticException
- 如果发生数字溢出
-
isLeapYear
public boolean isLeapYear()
根据Hijrah日历系统规则,检查年份是否为闰年。- Specified by:
-
isLeapYear
接口ChronoLocalDate
- 结果
- 如果此日期是闰年,则为true
-
equals
public boolean equals(Object obj)
将此日期与另一个日期进行比较,包括年表。将此
HijrahDate
与另一个进行比较,确保日期相同。仅比较类型为
HijrahDate
对象,其他类型返回false。 要比较两个TemporalAccessor
实例的日期,包括两个不同年代的日期,请使用ChronoField.EPOCH_DAY
作为比较器。- Specified by:
-
equals
在界面ChronoLocalDate
- 参数
-
obj
- 要检查的对象,null返回false - 结果
- 如果它等于另一个日期并且年代表相等,则为true
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
此日期的哈希码。- Specified by:
-
hashCode
在界面ChronoLocalDate
- 结果
- 仅基于年表和日期的合适哈希码
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
until
public long until(Temporal endExclusive, TemporalUnit unit)
从界面复制的说明:ChronoLocalDate
根据指定的单位计算到另一个日期的时间量。这将根据单个
TemporalUnit
计算两个ChronoLocalDate
对象之间的时间量。 起点和终点是this
和指定日期。 如果结束在开始之前,结果将是否定的。 所述Temporal
传递给此方法被转换为ChronoLocalDate
使用Chronology.date(TemporalAccessor)
。 计算返回一个整数,表示两个日期之间的完整单位数。 例如,可以使用startDate.until(endDate, DAYS)
计算两个日期之间的天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
,则通过调用this
作为第一个参数并将转换后的输入temporal作为第二个参数,获得TemporalUnit.between(Temporal, Temporal)
来获得此方法的结果。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
until
接口ChronoLocalDate
- Specified by:
-
until
在界面Temporal
- 参数
-
endExclusive
- 结束日期,不包括,在同一年表中转换为ChronoLocalDate
,不为null -
unit
- 计量金额的单位,而不是空 - 结果
- 此日期和结束日期之间的时间量
-
toString
public String toString()
复制自类:Object
描述返回对象的字符串表示形式。 通常,toString
方法返回一个“文本表示”此对象的字符串。 结果应该是简洁但信息丰富的表示,便于人们阅读。 建议所有子类都覆盖此方法。类
Object
的toString
方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@
”以及对象的哈希码的无符号十六进制表示形式组成。 换句话说,此方法返回一个等于值的字符串:getClass().getName() + '@' + Integer.toHexString(hashCode())
- Specified by:
-
toString
在界面ChronoLocalDate
- 重写:
-
toString
在课程Object
- 结果
- a string representation of the object.
-
-