模块 java.base

类 IsoFields

java.lang.Object
java.time.temporal.IsoFields

public final class IsoFields extends Object
特定于 ISO-8601 日历系统的字段和单位,包括季度和基于周的年份。

此类定义特定于 ISO 日历系统的字段和单位。

季度

ISO-8601 标准基于标准公民 12 个月年。这通常分为四个季度,通常缩写为 Q1、Q2、Q3 和 Q4。

一月、二月和三月在第一季度。四月、五月和六月在第二季度。七月、八月和九月在第三季度。 10 月、11 月和 12 月在第 4 季度。

完整日期使用三个字段表示:

基于周的年份

ISO-8601 标准最初旨在用作数据交换格式,定义日期和时间的字符串格式。但是,它还根据基于周的年份的概念定义了另一种表示日期的方法。

日期使用三个字段表示:

基于周的年份本身是相对于标准 ISO proptic 年份定义的。它与标准年的不同之处在于它总是从星期一开始。

基于周的年的第一周是标准 ISO 年的第一个基于星期一的周,在新的一年中至少有 4 天。

  • 如果 1 月 1 日是星期一,则第 1 周从 1 月 1 日开始
  • 如果 1 月 1 日是星期二,则第 1 周从上一个标准年的 12 月 31 日开始
  • 如果 1 月 1 日是星期三,则第 1 周从上一个标准年的 12 月 30 日开始
  • 如果 1 月 1 日是星期四,则第 1 周从上一个标准年的 12 月 29 日开始
  • 如果 1 月 1 日是星期五,则第一周从 1 月 4 日开始
  • 如果 1 月 1 日是星期六,则第一周从 1 月 3 日开始
  • 如果 1 月 1 日是星期日,则第一周从 1 月 2 日开始
大多数以周为基础的年份有 52 周,但有时也有 53 周。

例如:

基于周的年份示例
Date 星期几 字段值
2008-12-28 星期日 2008 年第 52 周
2008-12-29 周一 2009 年的第 1 周
2008-12-31 周三 2009 年的第 1 周
2009-01-01 周四 2009 年的第 1 周
2009-01-04 星期日 2009 年的第 1 周
2009-01-05 周一 2009 年第 2 周
实现要求:

这个类是不可变的和线程安全的。

自从:
1.8
  • 字段详细信息

    • DAY_OF_QUARTER

      public static final TemporalField  DAY_OF_QUARTER
      表示季度日期的字段。

      该字段允许查询和设置季度值。标准年第一季度的季度日值从 1 到 90,闰年第一季度从 1 到 91,第二季度从 1 到 91,第三季度和第四季度从 1 到 92。

      仅当日期、月份和年份可用时,才能计算季度日期。

      设置此字段时,该值允许部分宽松,取 1 到 92 之间的任何值。如果该季度少于 92 天,则第 92 天,可能是第 91 天,在下一季度。

      在解析的解析阶段,可以从年、季度和季度日创建日期。

      严格模式 中,所有三个字段都根据其有效值范围进行验证。根据年份和季度,季度字段从 1 到 90、91 或 92 进行验证。

      智能模式 中,所有三个字段都根据其有效值范围进行验证。 day-of-quarter 字段在 1 到 92 之间验证,忽略基于年份和季度的实际范围。如果季度日期超出实际范围一天,则结果日期晚一天。如果季度日期超出实际范围两天,则结果日期晚两天。

      宽松模式 中,只有年份根据有效值的范围进行验证。结果日期的计算等效于以下三阶段方法。首先,在请求年份的 1 月 1 日创建一个日期。然后用一年中的季度减去一个,然后将季度中的金额添加到日期中。最后,将季度减去一天,然后将天数加到日期上。

      该单元是一个不可变且线程安全的单例。

    • QUARTER_OF_YEAR

      public static final TemporalField  QUARTER_OF_YEAR
      代表季度的字段。

      该字段允许查询和设置季度值。季度的值从 1 到 4。

      仅当月份可用时才能计算季度。

      在解析的解析阶段,可以从年、季度和季度日创建日期。有关详细信息,请参阅 DAY_OF_QUARTER

      该单元是一个不可变且线程安全的单例。

    • WEEK_OF_WEEK_BASED_YEAR

      public static final TemporalField  WEEK_OF_WEEK_BASED_YEAR
      表示基于年份的星期几的字段。

      该字段允许查询和设置基于周的年值的周。 week-of-week-based-year 的值从 1 到 52,如果 week-based-year 有 53 周,则为 53。

      在解析的解析阶段,可以从基于星期的年份、基于星期的年份和星期几创建日期。

      严格模式 中,所有三个字段都根据其有效值范围进行验证。 week-of-week-based-year 字段的验证范围为 1 到 52 或 53,具体取决于基于周的年份。

      智能模式 中,所有三个字段都根据其有效值范围进行验证。 week-of-week-based-year 字段在 1 到 53 之间进行验证,忽略 week-based-year。如果基于周的年份为 53,但基于周的年份只有 52 周,则结果日期位于下一个基于周的年份的第 1 周。

      宽松模式 中,仅根据有效值范围验证基于周的年份。如果星期几在 1 到 7 的范围之外,则结果日期将调整适当的周数以将星期几减少到 1 到 7 的范围。如果星期几- based-year 值超出 1 到 52 的范围,则任何超出的周数将从结果日期中添加或减去。

      该单元是一个不可变且线程安全的单例。

    • WEEK_BASED_YEAR

      public static final TemporalField  WEEK_BASED_YEAR
      表示基于周的年份的字段。

      该字段允许查询和设置基于周的年值。

      该字段的范围与 LocalDate.MAX LocalDate.MIN 匹配。

      在解析的解析阶段,可以从基于星期的年份、基于星期的年份和星期几创建日期。有关详细信息,请参阅 WEEK_OF_WEEK_BASED_YEAR

      该单元是一个不可变且线程安全的单例。

    • WEEK_BASED_YEARS

      public static final TemporalUnit  WEEK_BASED_YEARS
      用于加法和减法的表示以周为基础的年份的单位。

      这允许在日期中添加或减去多个基于周的年份。该单位等于 52 或 53 周。基于周的年的估计持续时间与 365.2425 Days 的标准 ISO 年相同。

      添加规则将基于周的年数添加到基于周的年字段的现有值。如果生成的基于周的年只有 52 周,则日期将在下一个基于周的年的第 1 周。

      该单元是一个不可变且线程安全的单例。

    • QUARTER_YEARS

      public static final TemporalUnit  QUARTER_YEARS
      代表季度概念的单位。对于 ISO 日历系统,它等于 3 个月。一个季度的估计持续时间是 365.2425 Days 的四分之一。

      该单元是一个不可变且线程安全的单例。