此类定义了特定于ISO日历系统的字段和单位。
年度季度
ISO-8601标准基于标准的12个月公民年。通常将其分为四个季度,常缩写为Q1、Q2、Q3和Q4。1月、2月和3月属于Q1。4月、5月和6月属于Q2。7月、8月和9月属于Q3。10月、11月和12月属于Q4。
完整日期使用三个字段表示:
DAY_OF_QUARTER
- 季度内的日期,从1到90,91或92QUARTER_OF_YEAR
- 年度内的季度,从1到4YEAR
- 标准ISO年份
基于周的年份
ISO-8601标准最初旨在作为数据交换格式,定义了日期和时间的字符串格式。然而,它还定义了一种基于周的年份表达方式。日期使用三个字段表示:
DAY_OF_WEEK
- 定义星期几的标准字段,从星期一(1)到星期日(7)WEEK_OF_WEEK_BASED_YEAR
- 基于周的年份内的周数WEEK_BASED_YEAR
- 基于周的年份
基于周的年份的第一周是标准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周从1月4日开始
- 如果1月1日是星期六,则第1周从1月3日开始
- 如果1月1日是星期日,则第1周从1月2日开始
例如:
日期 | 星期几 | 字段数值 |
---|---|---|
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
-
Field Summary
Modifier and TypeFieldDescriptionstatic final TemporalField
代表季度内日期的字段。static final TemporalField
代表年度季度的字段。static final TemporalUnit
代表季度年份概念的单位。static final TemporalField
代表基于周的年份的字段。static final TemporalUnit
代表基于周的年份的单位,用于加法和减法目的。static final TemporalField
代表基于周的年份内周数的字段。 -
Method Summary
-
Field Details
-
DAY_OF_QUARTER
代表季度内日期的字段。此字段允许查询和设置季度内日期值。季度内日期在标准年份的Q1中为1到90,在闰年的Q1中为1到91,在Q2中为1到91,在Q3和Q4中为1到92。
只有在天数、月份和年份可用时才能计算季度内日期。
设置此字段时,值允许部分宽松,可取1到92之间的任何值。如果季度天数少于92天,则第92天,可能还有第91天,属于下一个季度。
在解析阶段,可以从年份、年度季度和季度内日期创建日期。
在严格模式下,所有三个字段都会根据其有效值范围进行验证。季度内日期字段在年份和季度中验证为1到90、91或92。
在智能模式下,所有三个字段都会根据其有效值范围进行验证。季度内日期字段在1到92之间进行验证,忽略基于年份和季度的实际范围。如果季度内日期超出实际范围一天,则结果日期会推迟一天。如果季度内日期超出实际范围两天,则结果日期会推迟两天。
在宽松模式下,只有年份会根据有效值范围进行验证。结果日期相当于以下三个阶段的处理。首先,在请求年份的1月1日创建一个日期。然后取季度内日期,减去一,然后将季度数添加到日期中。最后,取季度内日期,减去一,然后将天数添加到日期中。
此单位是不可变的且线程安全的单例。
-
QUARTER_OF_YEAR
代表年度季度的字段。此字段允许查询和设置年度季度值。年度季度的值为1到4。
只有在月份可用时才能计算年度季度。
在解析阶段,可以从年份、年度季度和季度内日期创建日期。详见
DAY_OF_QUARTER
。此单位是不可变的且线程安全的单例。
-
WEEK_OF_WEEK_BASED_YEAR
代表基于周的年份内周数的字段。此字段允许查询和设置基于周的年份内周数值。基于周的年份内周数为1到52,如果基于周的年份有53周,则为53。
在解析阶段,可以从基于周的年份、基于周的年份内周数和星期几创建日期。
在严格模式下,所有三个字段都会根据其有效值范围进行验证。基于周的年份内周数字段在1到52或53之间进行验证,取决于基于周的年份。
在智能模式下,所有三个字段都会根据其有效值范围进行验证。基于周的年份内周数字段在1到53之间进行验证,忽略基于周的年份。如果基于周的年份内周数为53,但基于周的年份只有52周,则结果日期在下一个基于周的年份的第1周。
在宽松模式下,只有基于周的年份会根据有效值范围进行验证。如果星期几超出1到7的范围,则结果日期会通过适当数量的周数调整,将星期几减少到1到7的范围。如果基于周的年份内周数值超出1到52的范围,则任何多余的周数会被添加或减去结果日期。
此单位是不可变的且线程安全的单例。
-
WEEK_BASED_YEAR
代表基于周的年份的字段。此字段允许查询和设置基于周的年份值。
该字段的范围与
LocalDate.MAX
和LocalDate.MIN
相匹配。在解析阶段,可以从基于周的年份、基于周的年份内周数和星期几创建日期。详见
WEEK_OF_WEEK_BASED_YEAR
。此单位是不可变的且线程安全的单例。
-
WEEK_BASED_YEARS
代表基于周的年份的单位,用于加法和减法目的。这允许将一定数量的基于周的年份添加到日期中,或从日期中减去。该单位等于52周或53周。基于周的年份的估计持续时间与标准ISO年份相同,为
365.2425天
。加法规则将基于周的年份的数量添加到现有的基于周的年份字段值中。如果结果的基于周的年份只有52周,则日期将位于下一个基于周的年份的第1周。
此单位是不可变的且线程安全的单例。
-
QUARTER_YEARS
代表季度年份概念的单位。对于ISO日历系统,它等于3个月。季度的估计持续时间是365.2425天
的四分之一。此单位是不可变的且线程安全的单例。
-