- java.lang.Object
-
- java.time.temporal.IsoFields
-
public final class IsoFieldsextends Object
ISO-8601日历系统特定的字段和单位,包括按季度和按周计算的年度。此类定义特定于ISO日历系统的字段和单位。
一年四分之一
ISO-8601标准基于标准的思域12个月。 这通常分为四个季度,通常缩写为Q1,Q2,Q3和Q4。1月,2月和3月是第一季度。 四月,五月和六月是第二季度。 七月,八月和九月是第三季度。 十月,十一月和十二月是第四季度。
完整日期使用三个字段表示:
-
DAY_OF_QUARTER
- 本季度内的当天,从1到90,91或92 -
QUARTER_OF_YEAR
- 一年内的季度,从1到4 -
YEAR
- 标准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日开始
例如:
Examples of Week based Years Date Day-of-week Field values 2008-12-28 Sunday Week 52 of week-based-year 2008 2008-12-29 Monday Week 1 of week-based-year 2009 2008-12-31 Wednesday Week 1 of week-based-year 2009 2009-01-01 Thursday Week 1 of week-based-year 2009 2009-01-04 Sunday Week 1 of week-based-year 2009 2009-01-05 Monday Week 2 of week-based-year 2009- 实现要求:
-
这个类是不可变的和线程安全的。
- 从以下版本开始:
- 1.8
-
-
-
字段汇总
字段 变量和类型 字段 描述 static TemporalField
DAY_OF_QUARTER
表示季度日期的字段。static TemporalField
QUARTER_OF_YEAR
代表季度的字段。static TemporalUnit
QUARTER_YEARS
代表四分之一年概念的单位。static TemporalField
WEEK_BASED_YEAR
代表以周为基础的年份的字段。static TemporalUnit
WEEK_BASED_YEARS
表示加法和减法的基于周的年份的单位。static TemporalField
WEEK_OF_WEEK_BASED_YEAR
代表以周为基础的年份的字段。
-
-
-
字段详细信息
-
DAY_OF_QUARTER
public static final TemporalField DAY_OF_QUARTER
表示季度日期的字段。此字段允许查询和设置季度值。 标准年度第一季度的季度值为1至90,闰年第一季度为1至91,第二季度为1至91,第三季度和第四季度为1至92。
只有年,年,月和年可用时,才能计算季度。
设置此字段时,允许该值部分宽松,从1到92取任何值。如果该季度少于92天,则第92天,可能是第91天,在下一季度。
在解析的解析阶段,可以创建一年,一年和一季中的日期。
在strict mode中 ,所有三个字段都根据其有效值范围进行验证。 季度日期字段的验证范围为1到90,91或92,具体取决于年份和季度。
在smart mode中 ,所有三个字段都根据其有效值范围进行验证。 季度日期字段在1到92之间验证,忽略基于年份和季度的实际范围。 如果季度超过实际范围一天,那么结果日期是一天之后。 如果季度超过实际范围两天,那么结果日期是两天后。
在lenient mode中 ,仅针对有效值范围验证年份。 计算得出的日期相当于以下三阶段方法。 首先,在要求年份的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
代表以周为基础的年份的字段。此字段允许查询和设置基于周的年份值的周。 以周为基础的年份的值为1到52,如果以周为基础的年份为53周,则为53。
在解析的解析阶段,可以从基于周的年,基于周的工作年和星期几创建日期。
在strict mode中 ,所有三个字段都根据其有效值范围进行验证。 基于星期的年度字段的验证范围为1到52或53,具体取决于基于周的年份。
在smart mode中 ,所有三个字段都根据其有效值范围进行验证。 基于周周的字段在1到53之间验证,忽略以周为基础的年份。 如果基于周周的年份为53,但基于周的年份仅为52周,那么结果日期是在下一周基于年份的第1周。
在lenient mode中 ,仅针对有效值范围验证基于周的年份。 如果星期几在1到7的范围之外,则将结果日期调整适当的周数,以将星期几减少到1到7的范围。如果是星期 - 基于年份的值超出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周。 基于周的年度的估计持续时间与标准ISO年的估计持续时间为
365.2425 Days
。添加规则将基于周的年数添加到基于周的年度字段的现有值。 如果由此产生的基于周的年份仅有52周,则日期将在下一周基于年的第1周。
此单元是一个不可变且线程安全的单例。
-
QUARTER_YEARS
public static final TemporalUnit QUARTER_YEARS
代表四分之一年概念的单位。 对于ISO日历系统,它等于3个月。 估计的四分之一年的持续时间是365.2425 Days
四分之一。此单元是一个不可变且线程安全的单例。
-
-