- 所有已实现的接口:
-
Serializable
标准一周为七天,但不同文化对一周的其他方面有不同的定义。该类代表了一周的定义,目的是提供TemporalField
实例。
WeekFields提供了五个字段,dayOfWeek()
、weekOfMonth()
、weekOfYear()
、weekOfWeekBasedYear()
和weekBasedYear()
,用于从任何时间对象中访问值。
星期几、月中的周数和年中的周数的计算基于通用年、年中的月份、月中的日期和ISO星期几,这些基于纪元日和年表。这些值可能不与纪元年对齐,取决于年表。
一周的定义如下:
- 第一天星期几。例如,ISO-8601标准将星期一视为第一天。
- 第一周中的最少天数。例如,ISO-8601标准将第一周视为至少需要4天。
月中的周数
使用一个字段:月中的周数。计算确保周数永远不会跨越月份边界。月份被分成周期,每个周期从定义的第一天星期几开始。最早的周期称为第0周,如果它的天数少于最少天数,则称为第1周。日期 | 星期几 | 第一天:星期一 最少天数: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周。基于周的年份
用于周的年份有两个字段,一个用于基于周的年份的周数
,一个用于基于周的年份
。在基于周的年份中,每周只属于一个年份。一年中的第1周是从第一天星期几开始并且至少有最少天数的第一周。一年中的第一周和最后一周可能包含来自上一个或下一个日历年的天数。
日期 | 星期几 | 第一天:星期一 最少天数: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 Summary
Modifier and TypeFieldDescriptionstatic final WeekFields
ISO-8601定义,其中一周从星期一开始,第一周至少有4天。static final WeekFields
一周从星期日开始,第一周至少有1天的常见定义。static final TemporalUnit
代表用于加法和减法的基于周的年份的单位。 -
Method Summary
Modifier and TypeMethodDescription返回一个字段,用于基于此WeekFields
访问星期几。boolean
检查此WeekFields
是否等于指定的对象。获取第一天星期几。int
获取第一周中的最少天数。int
hashCode()
此WeekFields
的哈希码。static WeekFields
从第一天星期几和最少天数获取WeekFields
的实例。static WeekFields
获取适用于区域设置的WeekFields
实例。toString()
此WeekFields
实例的字符串表示形式。返回一个字段,用于基于此WeekFields
访问基于周的年份的年份。返回一个字段,用于基于此WeekFields
访问月中的周数。返回一个字段,用于基于此WeekFields
访问基于周的年份的周数。返回一个字段,用于基于此WeekFields
访问年中的周数。
-
Field Details
-
ISO
ISO-8601定义,其中一周从星期一开始,第一周至少有4天。ISO-8601标准定义了一个基于周的日历系统。它使用基于周的年份和基于周的年份周数的概念来分割日期的流逝,而不是标准的年/月/日。
请注意,第一周可能从上一个日历年开始。还请注意,一个日历年的前几天可能属于与上一个日历年对应的基于周的年份。
-
SUNDAY_START
一周从星期日开始,第一周至少有1天的常见定义。定义为从星期日开始,并且一个月中至少有1天。这种周定义在美国和其他欧洲国家中使用。
-
WEEK_BASED_YEARS
代表用于加法和减法的基于周的年份的单位。这允许将一定数量的基于周的年份添加到日期中,或从日期中减去。该单位等于52周或53周。基于周的年份的估计持续时间与标准ISO年的持续时间相同,为
365.2425天
。加法规则将基于周的年份的数量添加到现有的基于周的年份字段值中,保留基于周的年份周数和星期几,除非周数对目标年份来说太大。在这种情况下,将该周设置为具有相同星期几的年份的最后一周。
此单位是不可变且线程安全的单例。
-
-
Method Details
-
of
获取适用于区域设置的WeekFields
实例。这将从本地化数据提供程序中查找适当的值。如果区域设置包含"fw"(一周的第一天)和/或"rg"(区域覆盖) Unicode扩展,返回的实例将反映使用这些扩展指定的值。如果"fw"和"rg"都被指定,则来自"fw"扩展的值将取代"rg"扩展的隐式值。
例如,对于希望使用英语区域设置,但希望第一天是符合ISO-8601标准的用户,可以调用
Locale enIsoLoc = Locale.forLanguageTag("en-u-fw-mon"); WeekFields.of(enIsoLoc).getFirstDayOfWeek(); // 返回 MONDAY
- 参数:
-
locale
- 要使用的区域设置,不能为空 - 返回:
- 周定义,不能为空
-
of
从第一天星期几和最少天数获取WeekFields
的实例。第一天星期几定义了一周中的第1天是星期几。第一周中的最少天数定义了必须在一个月或一年中从第一天星期几开始的天数,才能将该周计为第一周。值为1将把月或年的第一天计为第一周的一部分,而值为7将要求整整七天在新的月或年中。
对于每个唯一的
firstDayOfWeek
和minimalDaysInFirstWeek
组合,WeekFields实例都是单例的。- 参数:
-
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编号,其中第一天星期
的值为1。例如,如果第一天是星期日,则其值为1,其他天从星期一为2到星期六为7。
在解析阶段,本地化的星期几将被转换为标准化的
ChronoField
星期几。星期几必须在有效范围1到7内。此类中的其他字段使用标准化的星期几构建日期。- 返回:
- 一个提供访问本地化编号星期几的字段,非空
-
weekOfMonth
返回一个字段,用于根据此WeekFields
访问月份中的周数。这代表了一个月内周数的概念,其中周从固定的星期几开始,例如星期一。此字段通常与
dayOfWeek()
一起使用。第一周(1)是从月份中至少有
getMinimalDaysInFirstWeek()
天的getFirstDayOfWeek()
开始的周。因此,第一周可能在月份开始前最多开始minDays
天。如果第一周在月份开始后开始,则之前的时间段为第零周(0)。例如:
- 如果一个月的第一天是星期一,则第一周从第一天开始,没有第零周
- 如果一个月的第二天是星期一,则第一周从第二天开始,第一天在第零周
- 如果一个月的第四天是星期一,则第一周从第四天开始,第一天到第三天在第零周
- 如果一个月的第五天是星期一,则第二周从第五天开始,第一天到第四天在第一周此字段可与任何日历系统一起使用。
在解析阶段,可以从年份、月份中的周数和星期几创建日期。
在严格模式下,所有四个字段都将根据其有效值范围进行验证。周数字段将被验证以确保结果月份是所请求的月份。
在智能模式下,所有四个字段都将根据其有效值范围进行验证。周数字段将从0到6进行验证,这意味着结果日期可以在指定的不同月份中。
在宽松模式下,年份和星期几将根据其有效值范围进行验证。结果日期将等效计算为以下四个阶段的方法。首先,在请求的年份的第一周的第一天创建一个日期。然后取得月份中的周数,减去一,并将月份的数量添加到日期中。然后取得月份中的周数,减去一,并将周数的数量添加到日期中。最后,调整到本地化周内的正确星期几。
- 返回:
- 一个提供访问月份中周数的字段,非空
-
weekOfYear
返回一个字段,用于根据此WeekFields
访问年份中的周数。这代表了一年内周数的概念,其中周从固定的星期几开始,例如星期一。此字段通常与
dayOfWeek()
一起使用。第一周(1)是从年份中至少有
getMinimalDaysInFirstWeek()
天的getFirstDayOfWeek()
开始的周。因此,第一周可能在年份开始前最多开始minDays
天。如果第一周在年份开始后开始,则之前的时间段为第零周(0)。例如:
- 如果一年的第一天是星期一,则第一周从第一天开始,没有第零周
- 如果一年的第二天是星期一,则第一周从第二天开始,第一天在第零周
- 如果一年的第四天是星期一,则第一周从第四天开始,第一天到第三天在第零周
- 如果一年的第五天是星期一,则第二周从第五天开始,第一天到第四天在第一周此字段可与任何日历系统一起使用。
在解析阶段,可以从年份、年中的周数和星期几创建日期。
在严格模式下,所有三个字段都将根据其有效值范围进行验证。周数字段将被验证以确保结果年份是所请求的年份。
在智能模式下,所有三个字段都将根据其有效值范围进行验证。周数字段将从0到54进行验证,这意味着结果日期可以在指定的不同年份中。
在宽松模式下,年份和星期几将根据其有效值范围进行验证。结果日期将等效计算为以下三个阶段的方法。首先,在请求的年份的第一周的第一天创建一个日期。然后取得年中的周数,减去一,并将周数的数量添加到日期中。最后,调整到本地化周内的正确星期几。
- 返回:
- 一个提供访问年份中周数的字段,非空
-
weekOfWeekBasedYear
返回一个字段,用于根据此WeekFields
访问基于周的年份中的周数。这代表了一年内周数的概念,其中周从固定的星期几开始,例如星期一,每周属于一个确切的年份。此字段通常与
dayOfWeek()
和weekBasedYear()
一起使用。第一周(1)是从年份中至少有
getMinimalDaysInFirstWeek()
天的getFirstDayOfWeek()
开始的周。如果第一周在年份开始后开始,则之前的时间段为上一年的最后一周。例如:
- 如果一年的第一天是星期一,则第一周从第一天开始
- 如果一年的第二天是星期一,则第一周从第二天开始,第一天在上一年的最后一周
- 如果一年的第四天是星期一,则第一周从第四天开始,第一天到第三天在上一年的最后一周
- 如果一年的第五天是星期一,则第二周从第五天开始,第一天到第四天在第一周此字段可与任何日历系统一起使用。
在解析阶段,可以从基于周的年份、年中的周数和星期几创建日期。
在严格模式下,所有三个字段都将根据其有效值范围进行验证。周数字段将被验证以确保结果基于周的年份是所请求的基于周的年份。
在智能模式下,所有三个字段都将根据其有效值范围进行验证。基于周的年份的周数字段将从1到53进行验证,这意味着结果日期可以在指定的后续基于周的年份中。
在宽松模式下,年份和星期几将根据其有效值范围进行验证。结果日期将等效计算为以下三个阶段的方法。首先,在请求的基于周的年份的第一周的第一天创建一个日期。然后取得基于周的年份中的周数,减去一,并将周数的数量添加到日期中。最后,调整到本地化周内的正确星期几。
- 返回:
- 一个提供访问基于周的年份中周数的字段,非空
-
weekBasedYear
返回一个字段,用于根据此WeekFields
访问基于周的年份中的年份。这代表了周从固定的星期几开始,例如星期一,每周属于一个确切的年份的年份概念。此字段通常与
dayOfWeek()
和weekOfWeekBasedYear()
一起使用。第一周(1)是从年份中至少有
getMinimalDaysInFirstWeek()
天的getFirstDayOfWeek()
开始的周。因此,第一周可能在年份开始前开始。如果第一周在年份开始后开始,则之前的时间段为上一年的最后一周。此字段可与任何日历系统一起使用。
在解析阶段,可以从基于周的年份、年中的周数和星期几创建日期。
在严格模式下,所有三个字段都将根据其有效值范围进行验证。周数字段将被验证以确保结果基于周的年份是所请求的基于周的年份。
在智能模式下,所有三个字段都将根据其有效值范围进行验证。基于周的年份的周数字段将从1到53进行验证,这意味着结果日期可以在指定的后续基于周的年份中。
在宽松模式下,年份和星期几将根据其有效值范围进行验证。结果日期将等效计算为以下三个阶段的方法。首先,在请求的基于周的年份的第一周的第一天创建一个日期。然后取得基于周的年份中的周数,减去一,并将周数的数量添加到日期中。最后,调整到本地化周内的正确星期几。
- 返回:
- 一个提供访问基于周的年份的字段,非空
-
equals
检查此WeekFields
是否等于指定的对象。比较基于规则的整体状态,即第一天星期和最小天数。
-
hashCode
public int hashCode()该WeekFields
的哈希码。 -
toString
该WeekFields
实例的字符串表示形式。
-