- 所有已实现的接口:
Serializable
标准的一周是 7 天,但不同文化对一周的其他一些方面有不同的定义。这个类代表了星期的定义,目的是提供TemporalField
个实例。
WeekFields 提供五个字段,dayOfWeek()
、weekOfMonth()
、weekOfYear()
、weekOfWeekBasedYear()
和 weekBasedYear()
,它们提供对来自任何 时间对象 的值的访问。
星期几、一个月中的一周和一年中的一周的计算基于 预产期、month-of-year、月日 和 ISO day-of-week,它们基于 纪元日 和年表。根据年表,这些值可能与 纪元年 不一致。
一周定义如下:
- 一周的第一天。例如,ISO-8601 标准将星期一视为一周中的第一天。
- 第一周的最少天数。例如,ISO-8601 标准将第一周计算为至少需要 4 天。
每月的第几周
使用一个字段:一个月中的一周。计算确保周永远不会与月边界重叠。这个月被分成几个时期,每个时期从定义的一周的第一天开始。如果最早的时间段少于最小天数,则称为第 0 周;如果至少有最小天数,则称为第 1 周。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 周是从一周的第一天开始并且至少有最少天数的第一周。一年的第一周和最后几周可能分别包含上一个日历年或下一个日历年的天数。
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
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final WeekFields
ISO-8601 定义,一周从星期一开始,第一周至少有 4 天。static final WeekFields
一周的通用定义是从星期日开始,第一周至少有 1 天。static final TemporalUnit
用于加法和减法的表示以周为基础的年份的单位。 -
方法总结
修饰符和类型方法描述返回一个字段以根据此WeekFields
访问星期几。boolean
检查此WeekFields
是否等于指定的对象。获取一周中的第一天。int
获取第一周的最少天数。int
hashCode()
这个WeekFields
的哈希码。static WeekFields
从一周的第一天和最短的几天获取WeekFields
的实例。static WeekFields
获得适用于locale的WeekFields
实例。toString()
此WeekFields
实例的字符串表示形式。返回一个字段以访问基于此WeekFields
的基于周的年份。返回一个字段以根据此WeekFields
访问一个月中的星期几。返回一个字段以访问基于此WeekFields
的基于周的年份中的星期。返回一个字段以根据此WeekFields
访问一年中的第几周。
-
字段详细信息
-
ISO
ISO-8601 定义,一周从星期一开始,第一周至少有 4 天。ISO-8601 标准定义了一个基于周的日历系统。它使用基于周的年和基于周的年的概念来拆分天的流逝,而不是标准的年/月/日。
请注意,第一周可能从上一个日历年开始。另请注意,日历年的前几天可能在与前一个日历年相对应的基于周的年份中。
-
SUNDAY_START
一周的通用定义是从星期日开始,第一周至少有 1 天。定义为从星期日开始并且该月至少有 1 天。本周定义在美国和其他欧洲国家/地区使用。
-
WEEK_BASED_YEARS
用于加法和减法的表示以周为基础的年份的单位。这允许在日期中添加或减去多个基于周的年份。该单位等于 52 或 53 周。基于周的年的估计持续时间与
365.2425 Days
的标准 ISO 年相同。添加规则将基于周的年数添加到基于周的年字段的现有值中,保留基于周的年和星期几,除非周数太大为目标年。在这种情况下,星期设置为一年中的最后一周,星期几相同。
该单元是一个不可变且线程安全的单例。
-
-
方法详情
-
of
获得适用于locale的WeekFields
实例。这将从本地化数据提供者处查找适当的值。如果locale包含“fw”(一周的第一天)和/或“rg”(区域覆盖)Unicode 扩展,则返回的实例将反映使用这些扩展名指定的值。如果同时指定了“fw”和“rg”,则“fw”扩展中的值将取代“rg”扩展中的隐式值。
- 参数:
locale
- 要使用的locale,不为空- 返回:
- 周定义,不为空
-
of
从一周的第一天和最短的几天获取WeekFields
的实例。一周的第一天定义了 ISO
DayOfWeek
,即一周的第一天。第一周的最小天数定义了一个月或一年中必须存在的天数,从一周的第一天开始,在该周被计算为第一周之前。值为 1 会将月份或年份的第一天计为第一周的一部分,而值为 7 则要求整整 7 天都在新的月份或年份中。WeekFields 实例是单例;对于
firstDayOfWeek
和minimalDaysInFirstWeek
的每个唯一组合,将返回相同的实例。- 参数:
firstDayOfWeek
- 一周的第一天,不为空minimalDaysInFirstWeek
- 第一周的最小天数,从 1 到 7- 返回:
- 周定义,不为空
- 抛出:
IllegalArgumentException
- 如果最小天数小于 1 或大于 7
-
getFirstDayOfWeek
获取一周中的第一天。一周的第一天因文化而异。例如,美国使用星期日,而法国和 ISO-8601 标准使用星期一。此方法使用标准
DayOfWeek
枚举返回第一天。- 返回:
- 一周的第一天,不为空
-
getMinimalDaysInFirstWeek
public int getMinimalDaysInFirstWeek()获取第一周的最少天数。定义一个月或一年的第一周的天数因文化而异。例如ISO-8601要求在场4天(超过半周)才算第一周。
- 返回:
- 一个月或一年的第一周的最小天数,从 1 到 7
-
dayOfWeek
返回一个字段以根据此WeekFields
访问星期几。这类似于
ChronoField.DAY_OF_WEEK
但使用基于此WeekFields
的星期几的值。天数从 1 到 7,其中first day-of-week
被分配值 1。例如,如果一周中的第一天是星期日,那么它的值为 1,其他日期从星期一为 2 到星期六为 7。
在解析的解析阶段,本地化的星期几将转换为标准化的
ChronoField
星期几。星期几必须在 1 到 7 的有效范围内。此类中的其他字段使用标准化的星期几构建日期。- 返回:
- 提供访问具有本地化编号的星期几的字段,不为空
-
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
返回一个字段以根据此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
返回一个字段以访问基于此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
返回一个字段以访问基于此WeekFields
的基于周的年份。这代表了年的概念,其中周从固定的星期几开始,例如星期一,并且每个星期正好属于一年。此字段通常与
dayOfWeek()
和weekOfWeekBasedYear()
一起使用。第一周 (1) 是从
getFirstDayOfWeek()
开始的一周,一年中至少有getMinimalDaysInFirstWeek()
天。因此,第一周可能会在年初之前开始。如果第一周在年初之后开始,那么之前的时间段就是上一年的最后一周。此字段可用于任何日历系统。
在解析的解析阶段,可以从基于周的年、年中的周和周中的日期创建日期。
在 严格模式 中,所有三个字段都根据其有效值范围进行验证。验证一年中的星期字段以确保生成的基于星期的年份是请求的基于星期的年份。
在 智能模式 中,所有三个字段都根据其有效值范围进行验证。 week-of-week-based-year 字段的验证范围为 1 到 53,这意味着结果日期可以在指定日期的下一个基于周的年份中。
在 宽松模式 中,年和星期几根据有效值范围进行验证。结果日期的计算等效于以下三阶段方法。首先,在请求的基于周的年份的第一周的第一天创建一个日期。然后取基于年份的星期几,减去一个,然后将以星期为单位的数量添加到日期。最后,调整到本地化周内的正确星期几。
- 返回:
- 提供访问基于周的年份的字段,不为空
-
equals
检查此WeekFields
是否等于指定的对象。比较基于规则的整个状态,即一周中的第一天和最小天数。
-
hashCode
public int hashCode()这个WeekFields
的哈希码。 -
toString
此WeekFields
实例的字符串表示形式。
-