模块 java.base

类 HijrahDate

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 日历一年中的总天数与 Gregorian 日历不同,每个月的长度基于月球绕地球完整公转的周期(如连续新月之间)。有关受支持变体的详细信息,请参阅 HijrahChronology

每个 HijrahDate 都被创建为绑定到一个特定的 HijrahChronology,相同的年表被传播到从日期计算的每个 HijrahDate。要使用不同的 Hijrah 变体,其 HijrahChronology 可用于创建新的 HijrahDate 实例。或者,withVariant(java.time.chrono.HijrahChronology) 方法可用于转换为新的 HijrahChronology。

这是一个value-based类;程序员应该将 equal 的实例视为可互换的,并且不应使用实例进行同步,否则可能会发生不可预测的行为。例如,在未来的版本中,同步可能会失败。 equals 方法应该用于比较。

实现要求:
这个类是不可变的和线程安全的。
自从:
1.8
参见:
  • 方法详情

    • 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

      这将查询指定的时钟以获取当前日期 - 今天。使用此方法允许使用备用时钟进行测试。可以使用 依赖注入 引入备用时钟。

      参数:
      clock - 使用的时钟,不为空
      返回:
      当前日期,不为空
      抛出:
      DateTimeException - 如果无法获取当前日期
    • of

      public static HijrahDate  of(int prolepticYear, int month, int dayOfMonth)
      从 proleptic-year、month-of-year 和 day-of-month 字段中获取伊斯兰 Umm Al-Qura 日历的 HijrahDate

      这将返回具有指定字段的 HijrahDate。日期必须对年月有效,否则会抛出异常。

      参数:
      prolepticYear - 回历预兆年
      month - 回历月份,从 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 - 要转换的时间对象,不为空
      返回:
      Hijrah 日历系统中的日期,不为空
      抛出:
      DateTimeException - 如果无法转换为 HijrahDate
      参见:
    • getChronology

      public HijrahChronology  getChronology()
      获取此日期的年表,即 Hijrah 日历系统。

      Chronology 表示正在使用的日历系统。 ChronoField 中的时代和其他字段由年表定义。

      指定者:
      getChronology 在接口 ChronoLocalDate
      返回:
      Hijrah 年表,不为空
    • getEra

      public HijrahEra  getEra()
      获取适用于该日期的纪元。

      Hijrah 日历系统有一个纪元“AH”,由 HijrahEra 定义。

      指定者:
      getEra 在接口 ChronoLocalDate
      返回:
      此日期适用的时代,不为空
    • lengthOfMonth

      public int lengthOfMonth()
      返回此日期表示的月份的长度。

      这将以天为单位返回月份的长度。 Hijrah 日历系统中的月份长度在 29 到 30 天之间变化。

      指定者:
      lengthOfMonth 在接口 ChronoLocalDate
      返回:
      以天为单位的月份长度
    • lengthOfYear

      public int lengthOfYear()
      返回此日期表示的年份的长度。

      这将以天为单位返回一年的长度。 Hijrah 日历系统年份通常比 ISO 日历系统的年份短。

      指定者:
      lengthOfYear 在接口 ChronoLocalDate
      返回:
      一年的天数
    • getLong

      public long getLong(TemporalField  field)
      从接口 TemporalAccessor 复制的描述
      获取指定字段的值作为 long

      这将查询指定字段值的日期时间。返回值可能超出该字段的有效值范围。如果日期时间不能返回值,因为不支持该字段或其他原因,将抛出异常。

      指定者:
      getLong 在接口 TemporalAccessor
      参数:
      field - 要获取的字段,不为空
      返回:
      该字段的值
    • with

      public HijrahDate  with(TemporalField  field, long newValue)
      从接口 ChronoLocalDate 复制的描述
      返回与此对象相同类型的对象,但指定的字段已更改。

      这将返回一个基于此对象的新对象,其中指定字段的值已更改。例如,在 LocalDate 上,这可用于设置年、月或月中的某天。返回的对象将具有与该对象相同的可观察类型。

      在某些情况下,更改字段未完全定义。例如,如果目标对象是表示 1 月 31 日的日期,那么将月份更改为 2 月将不清楚。在这种情况下,字段负责解析结果。通常它会选择之前的有效日期,在本例中为 2 月的最后一个有效日期。

      指定者:
      with 在接口 ChronoLocalDate
      指定者:
      with 在接口 Temporal
      参数:
      field - 要在结果中设置的字段,不为空
      newValue - 结果中字段的新值
      返回:
      具有指定字段集的相同类型的对象,不为空
    • 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
       
      指定者:
      with 在接口 ChronoLocalDate
      指定者:
      with 在接口 Temporal
      参数:
      adjuster - 要使用的调节器,不为空
      返回:
      进行了指定调整的同一类型的对象,不为空
      抛出:
      DateTimeException - 如果无法进行调整。例如,如果调节器需要 ISO 年表
      ArithmeticException - 如果发生数字溢出
    • withVariant

      public HijrahDate  withVariant(HijrahChronology  chronology)
      返回带有请求的年表的 HijrahDate

      根据新请求的 HijrahChronology 检查年、月和日。如果年表的月份长度较短,则该天将减少为该月的最后一天。

      参数:
      chronology - 新的 HijrahChonology,非空
      返回:
      具有请求的 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 不能保证返回相同的日期时间。

      指定者:
      plus 在接口 ChronoLocalDate
      指定者:
      plus 在接口 Temporal
      参数:
      amount - 要添加的数量,不为空
      返回:
      进行了指定调整的同一类型的对象,不为空
      抛出:
      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 不能保证返回相同的日期时间。

      指定者:
      minus 在接口 ChronoLocalDate
      指定者:
      minus 在接口 Temporal
      参数:
      amount - 要减去的金额,不为空
      返回:
      进行了指定调整的同一类型的对象,不为空
      抛出:
      DateTimeException - 如果无法进行减法
      ArithmeticException - 如果发生数字溢出
    • isLeapYear

      public boolean isLeapYear()
      根据 Hijrah 日历系统规则检查年份是否为闰年。
      指定者:
      isLeapYear 在接口 ChronoLocalDate
      返回:
      如果此日期是闰年,则为真
    • plus

      public HijrahDate  plus(long amountToAdd, TemporalUnit  unit)
      从接口 ChronoLocalDate 复制的描述
      返回与此对象相同类型的对象,并添加指定的时间段。

      此方法返回一个基于此对象的新对象,并添加了指定的时间段。例如,在 LocalDate 上,这可用于添加年数、月数或天数。返回的对象将具有与该对象相同的可观察类型。

      在某些情况下,更改字段未完全定义。例如,如果目标对象是表示 1 月 31 日的日期,那么添加一个月就不清楚了。在这种情况下,字段负责解析结果。通常它会选择之前的有效日期,在本例中为 2 月的最后一个有效日期。

      指定者:
      plus 在接口 ChronoLocalDate
      指定者:
      plus 在接口 Temporal
      参数:
      amountToAdd - 要添加的指定单位的数量,可能是负数
      unit - 添加量的单位,不为空
      返回:
      添加了指定时间段的相同类型的对象,不为空
    • minus

      public HijrahDate  minus(long amountToSubtract, TemporalUnit  unit)
      从接口 ChronoLocalDate 复制的描述
      返回与此对象相同类型并减去指定句点的对象。

      此方法返回一个基于此对象并减去指定时间段的新对象。例如,在 LocalDate 上,这可用于减去若干年、月或日。返回的对象将具有与该对象相同的可观察类型。

      在某些情况下,更改字段未完全定义。例如,如果目标对象是表示 3 月 31 日的日期,那么减去一个月就不清楚了。在这种情况下,字段负责解析结果。通常它会选择之前的有效日期,在本例中为 2 月的最后一个有效日期。

      指定者:
      minus 在接口 ChronoLocalDate
      指定者:
      minus 在接口 Temporal
      参数:
      amountToSubtract - 要减去的指定单位的数量,可能是负数
      unit - 要减去的金额的单位,不为空
      返回:
      减去指定期间的相同类型的对象,不为空
    • atTime

      public final ChronoLocalDateTime <HijrahDate > atTime(LocalTime  localTime)
      从接口 ChronoLocalDate 复制的描述
      将此日期与时间结合起来创建一个 ChronoLocalDateTime

      这将返回从该日期在指定时间形成的 ChronoLocalDateTime。日期和时间的所有可能组合均有效。

      指定者:
      atTime 在接口 ChronoLocalDate
      参数:
      localTime - 使用的本地时间,不为空
      返回:
      从此日期和指定时间形成的本地日期时间,不为空
    • until

      public ChronoPeriod  until(ChronoLocalDate  endDate)
      从接口 ChronoLocalDate 复制的描述
      将此日期和另一个日期之间的时间段计算为 ChronoPeriod

      这将计算两个日期之间的时间段。所有提供的年表都使用年、月和日计算周期,但是 ChronoPeriod API 允许使用其他单位表示周期。

      起点和终点是this和指定的日期。如果结束早于开始,结果将为负。年、月、日的负号相同。

      使用该日期的年表进行计算。如有必要,输入的日期将被转换以匹配。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      until 在接口 ChronoLocalDate
      参数:
      endDate - 结束日期,唯一的,可以按任何时间顺序排列,不为空
      返回:
      此日期和结束日期之间的时间段,不为空
    • equals

      public boolean equals(Object  obj)
      将此日期与另一个日期进行比较,包括年表。

      将此 HijrahDate 与另一个进行比较,确保日期相同。

      只比较 HijrahDate 类型的对象,其他类型返回 false。要比较两个 TemporalAccessor 实例的日期,包括两个不同年表中的日期,请使用 ChronoField.EPOCH_DAY 作为比较器。

      指定者:
      equals 在接口 ChronoLocalDate
      参数:
      obj - 要检查的对象,null 返回 false
      返回:
      如果这等于另一个日期并且年表相等,则为真
      参见:
    • hashCode

      public int hashCode()
      此日期的哈希码。
      指定者:
      hashCode 在接口 ChronoLocalDate
      返回:
      仅基于年表和日期的合适哈希码
      参见:
    • until

      public long until(Temporal  endExclusive, TemporalUnit  unit)
      从接口 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 的计算在此方法中实现。单元DAYSWEEKSMONTHSYEARSDECADESCENTURIESMILLENNIAERAS应该被所有实现支持。其他 ChronoUnit 值将引发异常。

      如果单位不是 ChronoUnit ,则通过调用 TemporalUnit.between(Temporal, Temporal)this 作为第一个参数并将转换后的输入时间作为第二个参数来获得此方法的结果。

      此实例是不可变的,不受此方法调用的影响。

      指定者:
      until 在接口 ChronoLocalDate
      指定者:
      until 在接口 Temporal
      参数:
      endExclusive - 结束日期,独占,在相同的时间顺序中转换为 ChronoLocalDate,不为空
      unit - 衡量数量的单位,不为空
      返回:
      此日期与结束日期之间的时间量
    • toString

      public String  toString()
      从类复制的描述:Object
      返回对象的字符串表示形式。
      指定者:
      toString 在接口 ChronoLocalDate
      重写:
      toString 在类 Object
      返回:
      对象的字符串表示形式。