模块 java.base

类 WeekFields

java.lang.Object
java.time.temporal.WeekFields
所有已实现的接口:
Serializable

public final class WeekFields extends Object implements Serializable
星期几、星期几和星期几字段的本地化定义。

标准的一周是 7 天,但不同文化对一周的其他一些方面有不同的定义。这个类代表了星期的定义,目的是提供TemporalField 个实例。

WeekFields 提供五个字段,dayOfWeek() weekOfMonth() weekOfYear() weekOfWeekBasedYear() weekBasedYear() ,它们提供对来自任何 时间对象 的值的访问。

星期几、一个月中的一周和一年中的一周的计算基于 预产期month-of-year月日ISO day-of-week,它们基于 纪元日 和年表。根据年表,这些值可能与 纪元年 不一致。

一周定义如下:

  • 一周的第一天。例如,ISO-8601 标准将星期一视为一周中的第一天。
  • 第一周的最少天数。例如,ISO-8601 标准将第一周计算为至少需要 4 天。
这两个值一起允许将一年或一个月分为几周。

每月的第几周

使用一个字段:一个月中的一周。计算确保周永远不会与月边界重叠。这个月被分成几个时期,每个时期从定义的一周的第一天开始。如果最早的时间段少于最小天数,则称为第 0 周;如果至少有最小天数,则称为第 1 周。
WeekFields 的示例
Date 星期几 第一天:周一
最短天数:4
第一天:周一
最短天数:5
2008-12-31 周三 2008 年 12 月第 5 周 2008 年 12 月第 5 周
2009-01-01 周四 2009 年 1 月第 1 周 2009 年 1 月第 0 周
2009-01-04 星期日 2009 年 1 月第 1 周 2009 年 1 月第 0 周
2009-01-05 周一 2009 年 1 月第 2 周 2009 年 1 月第 1 周

一年中的一周

使用一个字段:一年中的一周。该计算确保周永远不会与年边界重叠。一年分为几个时期,每个时期都从定义的一周中的第一天开始。如果最早的时间段少于最小天数,则称为第 0 周;如果至少有最小天数,则称为第 1 周。

基于周的年份

两个字段用于基于周的年份,一个用于 week-of-week-based-year ,一个用于 week-based-year 。在基于周的年份中,每个星期仅属于一年。一年的第 1 周是从一周的第一天开始并且至少有最少天数的第一周。一年的第一周和最后几周可能分别包含上一个日历年或下一个日历年的天数。
基于周的年份的 WeekFields 示例
Date 星期几 第一天:周一
最短天数:4
第一天:周一
最短天数:5
2008-12-31 周三 2009 年第 1 周 2008 年第 53 周
2009-01-01 周四 2009 年第 1 周 2008 年第 53 周
2009-01-04 星期日 2009 年第 1 周 2008 年第 53 周
2009-01-05 周一 2009 年第 2 周 2009 年第 1 周
实现要求:
这个类是不可变的和线程安全的。
自从:
1.8
参见:
  • 字段详细信息

    • ISO

      public static final WeekFields  ISO
      ISO-8601 定义,一周从星期一开始,第一周至少有 4 天。

      ISO-8601 标准定义了一个基于周的日历系统。它使用基于周的年和基于周的年的概念来拆分天的流逝,而不是标准的年/月/日。

      请注意,第一周可能从上一个日历年开始。另请注意,日历年的前几天可能在与前一个日历年相对应的基于周的年份中。

    • SUNDAY_START

      public static final WeekFields  SUNDAY_START
      一周的通用定义是从星期日开始,第一周至少有 1 天。

      定义为从星期日开始并且该月至少有 1 天。本周定义在美国和其他欧洲国家/地区使用。

    • WEEK_BASED_YEARS

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

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

      添加规则将基于周的年数添加到基于周的年字段的现有值中,保留基于周的年和星期几,除非周数太大为目标年。在这种情况下,星期设置为一年中的最后一周,星期几相同。

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

  • 方法详情

    • of

      public static WeekFields  of(Locale  locale)
      获得适用于locale的 WeekFields 实例。

      这将从本地化数据提供者处查找适当的值。如果locale包含“fw”(一周的第一天)和/或“rg”(区域覆盖)Unicode 扩展,则返回的实例将反映使用这些扩展名指定的值。如果同时指定了“fw”和“rg”,则“fw”扩展中的值将取代“rg”扩展中的隐式值。

      参数:
      locale - 要使用的locale,不为空
      返回:
      周定义,不为空
    • of

      public static WeekFields  of(DayOfWeek  firstDayOfWeek, int minimalDaysInFirstWeek)
      从一周的第一天和最短的几天获取 WeekFields 的实例。

      一周的第一天定义了 ISO DayOfWeek,即一周的第一天。第一周的最小天数定义了一个月或一年中必须存在的天数,从一周的第一天开始,在该周被计算为第一周之前。值为 1 会将月份或年份的第一天计为第一周的一部分,而值为 7 则要求整整 7 天都在新的月份或年份中。

      WeekFields 实例是单例;对于 firstDayOfWeekminimalDaysInFirstWeek 的每个唯一组合,将返回相同的实例。

      参数:
      firstDayOfWeek - 一周的第一天,不为空
      minimalDaysInFirstWeek - 第一周的最小天数,从 1 到 7
      返回:
      周定义,不为空
      抛出:
      IllegalArgumentException - 如果最小天数小于 1 或大于 7
    • getFirstDayOfWeek

      public DayOfWeek  getFirstDayOfWeek()
      获取一周中的第一天。

      一周的第一天因文化而异。例如,美国使用星期日,而法国和 ISO-8601 标准使用星期一。此方法使用标准 DayOfWeek 枚举返回第一天。

      返回:
      一周的第一天,不为空
    • getMinimalDaysInFirstWeek

      public int getMinimalDaysInFirstWeek()
      获取第一周的最少天数。

      定义一个月或一年的第一周的天数因文化而异。例如ISO-8601要求在场4天(超过半周)才算第一周。

      返回:
      一个月或一年的第一周的最小天数,从 1 到 7
    • dayOfWeek

      public TemporalField  dayOfWeek()
      返回一个字段以根据此 WeekFields 访问星期几。

      这类似于 ChronoField.DAY_OF_WEEK 但使用基于此 WeekFields 的星期几的值。天数从 1 到 7,其中 first day-of-week 被分配值 1。

      例如,如果一周中的第一天是星期日,那么它的值为 1,其他日期从星期一为 2 到星期六为 7。

      在解析的解析阶段,本地化的星期几将转换为标准化的ChronoField星期几。星期几必须在 1 到 7 的有效范围内。此类中的其他字段使用标准化的星期几构建日期。

      返回:
      提供访问具有本地化编号的星期几的字段,不为空
    • weekOfMonth

      public TemporalField  weekOfMonth()
      返回一个字段以根据此 WeekFields 访问一个月中的星期几。

      这表示月份中周数的概念,其中周从固定的星期几开始,例如星期一。此字段通常与 dayOfWeek() 一起使用。

      第一周 (1) 是从 getFirstDayOfWeek() 开始的一周,该月至少有 getMinimalDaysInFirstWeek() 天。因此,第一周可能会在月初前 minDays 天开始。如果第一周在月初之后开始,则之前的期间为零周 (0)。

      例如:
      - 如果该月的第一天是星期一,则第一周从第一天开始并且没有第零周
      - 如果该月的第 2 天是星期一,则第 1 周从第 2 周开始,第 1 周在第 0 周
      - 如果该月的第 4 天是星期一,则第 1 周从第 4 天开始,第 1 到第 3 周在第 0 周
      - 如果该月的第 5 天是星期一,则第二周从第 5 天开始,第 1 到第 4 天在第一周

      此字段可用于任何日历系统。

      在解析的解析阶段,可以从年、月中的星期、年中的月和星期中创建日期。

      严格模式 中,所有四个字段都根据其有效值范围进行验证。验证每月的星期几字段以确保生成的月份是请求的月份。

      智能模式 中,所有四个字段都根据其有效值范围进行验证。 week-of-month 字段从 0 到 6 有效,这意味着结果日期可以与指定的月份不同。

      宽松模式 中,年和星期几根据有效值范围进行验证。结果日期的计算等效于以下四个阶段的方法。首先,在请求年份的一月第一周的第一天创建一个日期。然后取一年中的月份,减去一个,然后将以月为单位的金额添加到日期。然后取每月的第几周,减去一个,然后将以周为单位的金额添加到日期。最后,调整到本地化周内的正确星期几。

      返回:
      提供对每月一周的访问权限的字段,不为空
    • weekOfYear

      public TemporalField  weekOfYear()
      返回一个字段以根据此 WeekFields 访问一年中的第几周。

      这表示一年中周数的概念,其中周从固定的星期几开始,例如星期一。此字段通常与 dayOfWeek() 一起使用。

      第一周 (1) 是从 getFirstDayOfWeek() 开始的一周,一年中至少有 getMinimalDaysInFirstWeek() 天。因此,第一周可能会在年初前 minDays 天开始。如果第一周在年初之后开始,则之前的期间为零周 (0)。

      例如:
      - 如果一年的第一天是星期一,第一周从第一天开始,没有第零周
      - 如果一年中的第 2 天是星期一,则第 1 周从第 2 周开始,第 1 周在第 0 周
      - 如果一年中的第 4 天是星期一,则第 1 周从第 4 周开始,第 1 到 3 周在第 0 周
      - 如果一年中的第 5 天是星期一,则第二周从第 5 天开始,第 1 到第 4 天在第一周

      此字段可用于任何日历系统。

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

      严格模式 中,所有三个字段都根据其有效值范围进行验证。验证一年中的星期字段以确保生成的年份是请求的年份。

      智能模式 中,所有三个字段都根据其有效值范围进行验证。 week-of-year 字段的验证范围为 0 到 54,这意味着生成的日期可以与指定的年份不同。

      宽松模式 中,年和星期几根据有效值范围进行验证。结果日期的计算等效于以下三阶段方法。首先,在请求年份的第一周的第一天创建一个日期。然后取一年中的一周,减去一个,然后将以周为单位的数量添加到日期。最后,调整到本地化周内的正确星期几。

      返回:
      提供访问一年中一周的字段,不为空
    • weekOfWeekBasedYear

      public TemporalField  weekOfWeekBasedYear()
      返回一个字段以访问基于此 WeekFields 的基于周的年份中的星期。

      这表示一年中周数的概念,其中周从固定的星期几开始,例如星期一,并且每个星期正好属于一年。此字段通常与 dayOfWeek() weekBasedYear() 一起使用。

      第一周 (1) 是从 getFirstDayOfWeek() 开始的一周,一年中至少有 getMinimalDaysInFirstWeek() 天。如果第一周在年初之后开始,那么之前的时间段就是上一年的最后一周。

      例如:
      - 如果一年的第一天是星期一,第一周从第一天开始
      - 如果一年的第 2 天是星期一,则第 1 周从第 2 天开始,第 1 天在上一年的最后一周
      - 如果一年中的第 4 天是星期一,则第一周从第 4 天开始,第 1 到第 3 天在上一年的最后一周
      - 如果一年中的第 5 天是星期一,则第二周从第 5 天开始,第 1 到第 4 天在第一周

      此字段可用于任何日历系统。

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

      严格模式 中,所有三个字段都根据其有效值范围进行验证。验证一年中的星期字段以确保生成的基于星期的年份是请求的基于星期的年份。

      智能模式 中,所有三个字段都根据其有效值范围进行验证。 week-of-week-based-year 字段的验证范围为 1 到 53,这意味着结果日期可以在指定日期的下一个基于周的年份中。

      宽松模式 中,年和星期几根据有效值范围进行验证。结果日期的计算等效于以下三阶段方法。首先,在请求的基于周的年份的第一周的第一天创建一个日期。然后取基于年份的星期几,减去一个,然后将以星期为单位的数量添加到日期。最后,调整到本地化周内的正确星期几。

      返回:
      一个提供对基于年份的星期几的访问的字段,不为空
    • weekBasedYear

      public TemporalField  weekBasedYear()
      返回一个字段以访问基于此 WeekFields 的基于周的年份。

      这代表了年的概念,其中周从固定的星期几开始,例如星期一,并且每个星期正好属于一年。此字段通常与 dayOfWeek() weekOfWeekBasedYear() 一起使用。

      第一周 (1) 是从 getFirstDayOfWeek() 开始的一周,一年中至少有 getMinimalDaysInFirstWeek() 天。因此,第一周可能会在年初之前开始。如果第一周在年初之后开始,那么之前的时间段就是上一年的最后一周。

      此字段可用于任何日历系统。

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

      严格模式 中,所有三个字段都根据其有效值范围进行验证。验证一年中的星期字段以确保生成的基于星期的年份是请求的基于星期的年份。

      智能模式 中,所有三个字段都根据其有效值范围进行验证。 week-of-week-based-year 字段的验证范围为 1 到 53,这意味着结果日期可以在指定日期的下一个基于周的年份中。

      宽松模式 中,年和星期几根据有效值范围进行验证。结果日期的计算等效于以下三阶段方法。首先,在请求的基于周的年份的第一周的第一天创建一个日期。然后取基于年份的星期几,减去一个,然后将以星期为单位的数量添加到日期。最后,调整到本地化周内的正确星期几。

      返回:
      提供访问基于周的年份的字段,不为空
    • equals

      public boolean equals(Object  object)
      检查此 WeekFields 是否等于指定的对象。

      比较基于规则的整个状态,即一周中的第一天和最小天数。

      重写:
      equals 在类 Object
      参数:
      object - 要比较的其他规则,null 返回 false
      返回:
      如果这等于指定的规则,则为真
      参见:
    • hashCode

      public int hashCode()
      这个 WeekFields 的哈希码。
      重写:
      hashCode 在类 Object
      返回:
      合适的哈希码
      参见:
    • toString

      public String  toString()
      WeekFields 实例的字符串表示形式。
      重写:
      toString 在类 Object
      返回:
      字符串表示,不为空