- 所有已实现的接口:
-
Serializable,Comparable<ChronoField>,Constable,TemporalField
这组字段提供基于字段的访问以操作日期、时间或日期时间。标准字段集可以通过实现TemporalField来扩展。
这些字段旨在适用于多个日历系统。例如,大多数非ISO日历系统将日期定义为年、月和日,只是规则略有不同。每个字段的文档解释了其操作方式。
- 实现要求:
- 这是一个最终的、不可变的和线程安全的枚举。
- 自版本:
- 1.8
-
Nested Class Summary
Nested classes/interfaces declared in class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>> -
Enum Constant Summary
Enum ConstantsEnum ConstantDescription月内对齐的星期几。年内对齐的星期几。月内对齐的周。年内对齐的周。上午下午。上午下午的时钟小时。一天中的时钟小时。月中的日期。一周中的星期几,例如星期二。一年中的日期。基于Java纪元1970-01-01(ISO)的纪元日。纪元。上午下午的小时。一天中的小时。瞬时纪元秒。一天中的微秒。秒内的微秒。一天中的毫秒。秒内的毫秒。一天中的分钟。小时内的分钟。一年中的月份,例如三月。一天中的纳秒。秒内的纳秒。与UTC /格林威治的偏移量。基于顺序计算的纪元月。一天中的秒。分钟内的秒。纪元年,例如2012年。纪元内的年份。 -
Method Summary
Modifier and TypeMethodDescription<R extends Temporal>
RadjustInto(R temporal, long newValue) 返回具有设置为此字段值的指定时间对象的副本。intcheckValidIntValue(long value) 检查指定值是否有效并适合于int。longcheckValidValue(long value) 检查指定值是否适用于此字段。获取字段的计量单位。longgetFrom(TemporalAccessor temporal) 从指定的时间对象获取此字段的值。获取字段受限的范围。boolean检查此字段是否表示日期的一个组成部分。booleanisSupportedBy(TemporalAccessor temporal) 检查此字段是否受时间对象支持。boolean检查此字段是否表示时间的一个组成部分。range()获取字段的有效值范围。rangeRefinedBy(TemporalAccessor temporal) 使用时间对象来细化结果,获取此字段的有效值范围。toString()返回此枚举常量的名称,如声明中所包含的。static ChronoField返回具有指定名称的此类的枚举常量。static ChronoField[]values()返回包含此枚举类的常量的数组,按照它们声明的顺序。Methods declared in class java.lang.Enum
clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOfMethods declared in interface java.time.temporal.TemporalField
getDisplayName, resolve
-
Enum Constant Details
-
NANO_OF_SECOND
纳秒。这计算秒内的纳秒,范围从0到999,999,999。此字段对所有日历系统具有相同的含义。
此字段用于表示纳秒处理秒的任何小数部分。如果
TemporalAccessor的实现可以返回SECOND_OF_MINUTE、SECOND_OF_DAY或INSTANT_SECONDS的值,则应为此字段提供一个值,用零填充未知精度。当此字段用于设置值时,应根据对象存储的精度设置尽可能多的精度,使用整数除法来去除多余的精度。例如,如果
TemporalAccessor将时间存储到毫秒精度,则纳秒必须除以1,000,000,然后替换毫秒。解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。该字段与
MILLI_OF_SECOND和MICRO_OF_SECOND结合解析。 -
NANO_OF_DAY
纳秒。这计算一天内的纳秒,范围从0到(24 * 60 * 60 * 1,000,000,000) - 1。此字段对所有日历系统具有相同的含义。
此字段用于表示纳秒处理秒的任何小数部分。如果
TemporalAccessor的实现可以返回SECOND_OF_DAY的值,则应为此字段提供一个值,用零填充未知精度。解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。该值被拆分以形成
NANO_OF_SECOND、SECOND_OF_MINUTE、MINUTE_OF_HOUR和HOUR_OF_DAY字段。 -
MICRO_OF_SECOND
秒内的微秒。这计算秒内的微秒,范围从0到999,999。此字段对所有日历系统具有相同的含义。
此字段用于表示微秒处理秒的任何小数部分。如果
TemporalAccessor的实现可以返回SECOND_OF_MINUTE、SECOND_OF_DAY或INSTANT_SECONDS的值,则应为此字段提供一个值,用零填充未知精度。当此字段用于设置值时,应与将
NANO_OF_SECOND设置为值乘以1,000的方式相同。解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。该字段与
MILLI_OF_SECOND结合解析以生成NANO_OF_SECOND。 -
MICRO_OF_DAY
一天内的微秒。这计算一天内的微秒,范围从0到(24 * 60 * 60 * 1,000,000) - 1。此字段对所有日历系统具有相同的含义。
此字段用于表示微秒处理秒的任何小数部分。如果
TemporalAccessor的实现可以返回SECOND_OF_DAY的值,则应为此字段提供一个值,用零填充未知精度。当此字段用于设置值时,应与将
NANO_OF_DAY设置为值乘以1,000的方式相同。解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。该值被拆分以形成
MICRO_OF_SECOND、SECOND_OF_MINUTE、MINUTE_OF_HOUR和HOUR_OF_DAY字段。 -
MILLI_OF_SECOND
秒内的毫秒。这计算秒内的毫秒,范围从0到999。此字段对所有日历系统具有相同的含义。
此字段用于表示毫秒处理秒的任何小数部分。如果
TemporalAccessor的实现可以返回SECOND_OF_MINUTE、SECOND_OF_DAY或INSTANT_SECONDS的值,则应为此字段提供一个值,用零填充未知精度。当此字段用于设置值时,应与将
NANO_OF_SECOND设置为值乘以1,000,000的方式相同。解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。该字段与
MICRO_OF_SECOND结合解析以生成NANO_OF_SECOND。 -
MILLI_OF_DAY
一天内的毫秒。这计算一天内的毫秒,范围从0到(24 * 60 * 60 * 1,000) - 1。此字段对所有日历系统具有相同的含义。
此字段用于表示毫秒处理秒的任何小数部分。如果
TemporalAccessor的实现可以返回SECOND_OF_DAY的值,则应为此字段提供一个值,用零填充未知精度。当此字段用于设置值时,应与将
NANO_OF_DAY设置为值乘以1,000,000的方式相同。解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。该值被拆分以形成
MILLI_OF_SECOND、SECOND_OF_MINUTE、MINUTE_OF_HOUR和HOUR_OF_DAY字段。 -
SECOND_OF_MINUTE
分钟内的秒。这计算小时内的分钟,范围从0到59。此字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。
-
SECOND_OF_DAY
一天内的秒。这计算一天内的秒,范围从0到(24 * 60 * 60) - 1。此字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。该值被拆分以形成
SECOND_OF_MINUTE、MINUTE_OF_HOUR和HOUR_OF_DAY字段。 -
MINUTE_OF_HOUR
小时内的分钟。这计算小时内的分钟,范围从0到59。此字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:在严格和智能模式下验证值,但不在宽松模式下验证。
-
MINUTE_OF_DAY
一天中的分钟。这计算一天中的分钟数,从0到(24 * 60) - 1。这个字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:该值在严格和智能模式下进行验证,但在宽松模式下不进行验证。该值被拆分为
MINUTE_OF_HOUR和HOUR_OF_DAY字段。 -
HOUR_OF_AMPM
上午/下午的小时。这计算上午/下午的小时数,从0到11。这是在标准12小时数字时钟上观察到的小时数。这个字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:该值在严格和智能模式下从0到11进行验证。在宽松模式下,该值不会被验证。它与
AMPM_OF_DAY结合,通过将AMPM_OF_DAY值乘以12来形成HOUR_OF_DAY。请参阅相关字段
CLOCK_HOUR_OF_AMPM,它计算从1到12的小时数。 -
CLOCK_HOUR_OF_AMPM
上午/下午的时钟小时。这计算上午/下午的小时数,从1到12。这是在标准12小时模拟挂钟上观察到的小时数。这个字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:该值在严格模式下从1到12进行验证,在智能模式下从0到12进行验证。在宽松模式下,该值不会被验证。该字段转换为具有相同值的
HOUR_OF_AMPM,除非该值为12,否则将转换为0。请参阅相关字段
HOUR_OF_AMPM,它计算从0到11的小时数。 -
HOUR_OF_DAY
一天中的小时。这计算一天中的小时数,从0到23。这是在标准24小时数字时钟上观察到的小时数。这个字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:该值在严格和智能模式下进行验证,但在宽松模式下不进行验证。该字段与
MINUTE_OF_HOUR、SECOND_OF_MINUTE和NANO_OF_SECOND结合,以生成LocalTime。在宽松模式下,任何多余的天数都将添加到解析的日期中,或通过DateTimeFormatter.parsedExcessDays()提供。请参阅相关字段
CLOCK_HOUR_OF_DAY,它计算从1到24的小时数。 -
CLOCK_HOUR_OF_DAY
一天中的时钟小时。这计算一天中的小时数,从1到24。这是在24小时模拟挂钟上观察到的小时数。这个字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:该值在严格模式下从1到24进行验证,在智能模式下从0到24进行验证。在宽松模式下,该值不会被验证。该字段转换为具有相同值的
HOUR_OF_DAY,除非该值为24,否则将转换为0。请参阅相关字段
HOUR_OF_DAY,它计算从0到23的小时数。 -
AMPM_OF_DAY
一天中的上午/下午。这计算一天中的上午/下午,从0(上午)到1(下午)。这个字段对所有日历系统具有相同的含义。
解析此字段时,其行为等同于以下内容:该值在严格和智能模式下从0到1进行验证。在宽松模式下,该值不会被验证。它与
HOUR_OF_AMPM结合(如果不存在,默认为'6'),通过将AMPM_OF_DAY值乘以12来形成HOUR_OF_DAY。 -
DAY_OF_WEEK
一周中的星期几,例如星期二。这代表一周中星期几的标准概念。在默认的ISO日历系统中,这些值从星期一(1)到星期日(7)。
DayOfWeek类可用于解释结果。大多数非ISO日历系统也定义了与ISO对齐的七天周。这些日历系统还必须使用相同的编号系统,从星期一(1)到星期日(7),这允许使用
DayOfWeek。如果没有标准的七天周,日历系统应实现此字段,如果它们具有类似于一周的具名或编号天数的概念。建议从1开始编号。
-
ALIGNED_DAY_OF_WEEK_IN_MONTH
一个月中对齐的星期几。这代表对齐到月初的一周内的天数计数概念。此字段通常与
ALIGNED_WEEK_OF_MONTH一起使用。例如,在具有七天周的日历系统中,第一个对齐的月周从月份的第1天开始,第二个对齐的周从第8天开始,依此类推。在每个对齐的周内,天数从1到7编号,并作为此字段的值返回。因此,从第1天到第7天将具有从1到7的对齐星期几值。从第8天到第14天将重复此过程,对齐星期几值从1到7。
没有七天周的日历系统通常应以相同的方式实现此字段,但使用替代的周长度。
-
ALIGNED_DAY_OF_WEEK_IN_YEAR
一年中对齐的星期几。这代表对齐到年初的一周内的天数计数概念。此字段通常与
ALIGNED_WEEK_OF_YEAR一起使用。例如,在具有七天周的日历系统中,第一个对齐的年周从年份的第1天开始,第二个对齐的周从第8天开始,依此类推。在每个对齐的周内,天数从1到7编号,并作为此字段的值返回。因此,从第1天到第7天将具有从1到7的对齐星期几值。从第8天到第14天将重复此过程,对齐星期几值从1到7。
没有七天周的日历系统通常应以相同的方式实现此字段,但使用替代的周长度。
-
DAY_OF_MONTH
一个月中的日期。这代表一个月中的日期概念。在默认的ISO日历系统中,大多数月份的日期从1到31。4月、6月、9月、11月的日期为1到30,而2月的日期为1到28,闰年为29。
非ISO日历系统应使用日历系统用户最熟悉的日期值来实现此字段。通常,这是从1到月份长度的天数计数。
-
DAY_OF_YEAR
一年中的日期。这代表一年中的日期概念。在默认的ISO日历系统中,标准年份的日期从1到365,闰年为1到366。
非ISO日历系统应使用日历系统用户最熟悉的日期值来实现此字段。通常,这是从1到年份长度的天数计数。
请注意,非ISO日历系统可能具有在月份编号的自然重置点之外更改的年编号系统。一个例子是日本日历系统,其中一个时代的更改,将年号重置为1,可以发生在任何日期。时代和年号重置也会导致日期重置为1,但月份或日期不会。
-
EPOCH_DAY
基于Java纪元1970-01-01(ISO)的纪元日。这个字段是1970-01-01(ISO)为零的连续天数计数。请注意,这使用本地时间线,忽略偏移和时区。
此字段在所有日历系统中严格定义具有相同的含义。这是为了确保日历之间的互操作性。
EpochDay的范围在(LocalDate.MIN.toEpochDay(),LocalDate.MAX.toEpochDay())之间,两者都包括在内。
-
ALIGNED_WEEK_OF_MONTH
一个月中的对齐周。这代表对齐到月初的一月内的周数计数概念。此字段通常与
ALIGNED_DAY_OF_WEEK_IN_MONTH一起使用。例如,在具有七天周的日历系统中,第一个对齐的月周从月份的第1天开始,第二个对齐的周从月份的第8天开始,依此类推。因此,从第1天到第7天的日期属于对齐周1,而从第8天到第14天的日期属于对齐周2,依此类推。
没有七天周的日历系统通常应以相同的方式实现此字段,但使用替代的周长度。
-
ALIGNED_WEEK_OF_YEAR
一年中的对齐周。这代表对齐到年初的一年内的周数计数概念。此字段通常与
ALIGNED_DAY_OF_WEEK_IN_YEAR一起使用。例如,在具有七天周的日历系统中,第一个对齐的年周从年份的第1天开始,第二个对齐的周从年份的第8天开始,依此类推。因此,从第1天到第7天的日期属于对齐周1,而从第8天到第14天的日期属于对齐周2,依此类推。
没有七天周的日历系统通常应以相同的方式实现此字段,但使用替代的周长度。
-
MONTH_OF_YEAR
一年中的月份,例如三月。这代表一年中的月份概念。在默认的ISO日历系统中,月份的值从一月(1)到十二月(12)。
非ISO日历系统应使用日历系统用户最熟悉的月份值来实现此字段。通常,这是从1开始的月份计数。
-
PROLEPTIC_MONTH
基于推测年份的月份,从零开始顺序计算月份。这个字段是月份的连续计数,其中推测年份零的第一个月的值为零。后续月份的值逐渐增大。较早的月份值逐渐减小。月份序列中没有间隙或中断。请注意,这使用本地时间线,忽略偏移和时区。
在默认的ISO日历系统中,2012年6月的值将为
(2012 * 12 + 6 - 1)。此字段主要用于内部使用。非ISO日历系统必须按照上述定义实现此字段。这只是从推测年份0开始的已过月份的简单基于零的计数。所有具有完整推测年份定义的日历系统都将具有零年。如果日历系统具有排除零年的最小年份,则必须进行外推以定义此方法。
-
YEAR_OF_ERA
时代中的年份。表示时代中年份的概念。此字段通常与
ERA一起使用。日期的标准心智模型基于三个概念 - 年、月和日。这些概念映射到
YEAR、MONTH_OF_YEAR和DAY_OF_MONTH字段。请注意,没有提及时代。日期的完整模型需要四个概念 - 时代、年、月和日。这些概念映射到ERA、YEAR_OF_ERA、MONTH_OF_YEAR和DAY_OF_MONTH字段。使用此字段还是YEAR取决于使用的心智模型。有关此主题的更多讨论,请参见ChronoLocalDate。在默认的ISO日历系统中,定义了两个时代,'BCE'和'CE'。时代'CE'是当前使用的时代,年代从1到最大值。时代'BCE'是以前的时代,年代向后运行。
例如,每次减去一年会产生以下结果:
- 年代前 2 = 'CE' 年代 2
- 年代前 1 = 'CE' 年代 1
- 年代前 0 = 'BCE' 年代 1
- 年代前 -1 = 'BCE' 年代 2请注意,ISO-8601标准实际上没有定义时代。还要注意,由于儒略历和格里高利历之间的变化,ISO时代与众所周知的公元前/公元后时代不对齐。
非ISO日历系统应使用最受认可的年代值来实现此字段,以供日历系统的用户使用。由于大多数日历系统只有两个时代,年代编号方法通常与ISO日历系统使用的方法相同。年代值通常应始终为正值,但不是必需的。
-
YEAR
纪年年份,例如2012年。表示年份的概念,按顺序计数并使用负数。纪年年份不是根据时代解释的。请参见
YEAR_OF_ERA,其中显示了从纪年年份到年代年份的映射示例。日期的标准心智模型基于三个概念 - 年、月和日。这些概念映射到
YEAR、MONTH_OF_YEAR和DAY_OF_MONTH字段。请注意,没有提及时代。日期的完整模型需要四个概念 - 时代、年、月和日。这些概念映射到ERA、YEAR_OF_ERA、MONTH_OF_YEAR和DAY_OF_MONTH字段。使用此字段还是YEAR_OF_ERA取决于使用的心智模型。有关此主题的更多讨论,请参见ChronoLocalDate。非ISO日历系统应按以下方式实现此字段。如果日历系统只有两个时代,即某一固定日期之前和之后,则纪年年份的值必须与后一个时代的年代年份值相同,并且对于较早的时代,值应逐渐减小。如果日历系统有两个以上的时代,则可以使用任何适当的值来定义纪年年份,尽管将其定义为与ISO相同可能是最佳选择。
-
ERA
时代。表示时间线上最大的分区概念。此字段通常与
YEAR_OF_ERA一起使用。在默认的ISO日历系统中,定义了两个时代,'BCE'和'CE'。时代'CE'是当前使用的时代,年代从1到最大值。时代'BCE'是以前的时代,年代向后运行。请参见
YEAR_OF_ERA以获取完整示例。非ISO日历系统应实现此字段以定义时代。在1970-01-01(ISO)活动的时代的值必须分配值1。较早的时代必须具有顺序较小的值。较晚的时代必须具有顺序较大的值。
-
INSTANT_SECONDS
瞬时时间戳(以秒为单位)。表示1970-01-01T00:00Z(ISO)为零时的秒数顺序计数的概念。此字段可与
NANO_OF_SECOND一起使用,以表示秒的小数部分。Instant表示时间线上的瞬时点。单独使用时,瞬时点没有足够的信息来计算本地日期时间。只有与偏移量或时区配对时,才能计算本地日期或时间。此字段在所有日历系统中严格定义具有相同的含义。这是确保日历之间互操作性所必需的。
-
OFFSET_SECONDS
与UTC/Greenwich的偏移量。表示本地时间与UTC/Greenwich之间的偏移量的概念(以秒为单位)。
ZoneOffset表示本地时间与UTC/Greenwich之间的时间段。这通常是固定的小时数和分钟数。它等同于偏移量的秒数的total amount。例如,在冬季,巴黎的偏移量为+01:00,即3600秒。此字段在所有日历系统中严格定义具有相同的含义。这是确保日历之间互操作性所必需的。
-
-
Method Details
-
values
返回包含此枚举类的常量的数组,按照它们声明的顺序排列。- 返回:
- 返回包含此枚举类的常量的数组,按照它们声明的顺序排列
-
valueOf
返回具有指定名称的此类的枚举常量。字符串必须与此类中用于声明枚举常量的标识符完全匹配。(不允许存在多余的空格字符。)- 参数:
-
name- 要返回的枚举常量的名称。 - 返回:
- 具有指定名称的枚举常量
- 抛出:
-
IllegalArgumentException- 如果此枚举类没有具有指定名称的常量 -
NullPointerException- 如果参数为null
-
getBaseUnit
从接口中复制的描述:TemporalField获取字段的计量单位。字段的单位是在范围内变化的周期。例如,在字段'MonthOfYear'中,单位是'Months'。另请参见
TemporalField.getRangeUnit()。- 在接口中指定:
-
getBaseUnit在接口TemporalField - 返回:
- 定义字段基本单位的单位,非null
-
getRangeUnit
从接口中复制的描述:TemporalField获取字段受限制的范围。字段的范围是字段变化的周期。例如,在字段'MonthOfYear'中,范围是'Years'。另请参见
TemporalField.getBaseUnit()。范围永远不会为null。例如,'Year'字段是'YearOfForever'的简写。因此,它的单位是'Years',范围是'Forever'。
- 在接口中指定:
-
getRangeUnit在接口TemporalField - 返回:
- 定义字段范围的单位,非null
-
range
获取字段的有效值范围。所有字段都可以表示为
long整数。此方法返回一个描述该值的有效范围的对象。此方法返回ISO-8601日历系统中字段的范围。对于其他日历系统,此范围可能不正确。使用
Chronology.range(ChronoField)来访问不同日历系统的正确范围。请注意,结果仅描述最小和最大有效值,重要的是不要过分解读。例如,范围内可能存在对于字段无效的值。
- 在接口中指定:
-
range在接口TemporalField - 返回:
- 字段的有效值范围,非null
-
isDateBased
public boolean isDateBased()检查此字段是否表示日期的组成部分。从星期几到时代的字段是基于日期的。
- 在接口中指定:
-
isDateBased在接口TemporalField - 返回:
- 如果它是日期的组成部分,则为true
-
isTimeBased
public boolean isTimeBased()检查此字段是否表示时间的组成部分。从秒的纳秒到白天的上午/下午是基于时间的。
- 在接口中指定:
-
isTimeBased在接口TemporalField - 返回:
- 如果它是时间的组成部分,则为true
-
checkValidValue
public long checkValidValue(long value) 检查指定的值是否对此字段有效。这会验证该值是否在
range()返回的有效值的外部范围内。此方法检查ISO-8601日历系统中字段的范围。对于其他日历系统,此范围可能不正确。使用
Chronology.range(ChronoField)来访问不同日历系统的正确范围。- 参数:
-
value- 要检查的值 - 返回:
- 传入的值
-
checkValidIntValue
public int checkValidIntValue(long value) 检查指定的值是否有效并适合于int。验证该值是否在
range()返回的有效值范围之内。还检查所有有效值是否在int的边界内。此方法针对ISO-8601日历系统中字段的范围进行检查。对于其他日历系统,此范围可能不正确。使用
Chronology.range(ChronoField)来访问不同日历系统的正确范围。- 参数:
-
value- 要检查的值 - 返回:
- 传入的值
-
isSupportedBy
从接口复制的描述:TemporalField检查此字段是否受到时间对象的支持。确定时间访问器是否支持此字段。如果返回false,则无法查询此字段的时间对象。
有两种等效的使用此方法的方式。第一种是直接调用此方法。第二种是使用
TemporalAccessor.isSupported(TemporalField):// 这两行是等效的,但建议使用第二种方法 temporal = thisField.isSupportedBy(temporal); temporal = temporal.isSupported(thisField);
建议使用第二种方法isSupported(TemporalField),因为在代码中更清晰易读。实现应使用
ChronoField中可用的字段来确定它们是否受支持。- 指定者:
-
isSupportedBy在接口TemporalField - 参数:
-
temporal- 要查询的时间对象,不能为空 - 返回:
- 如果可以查询此字段的日期时间,则为true,否则为false
-
rangeRefinedBy
从接口复制的描述:TemporalField使用时间对象来细化结果,获取此字段的有效值范围。使用时间对象查找字段的有效值范围。这类似于
TemporalField.range(),但此方法使用时间对象细化结果。例如,如果字段是DAY_OF_MONTH,则range方法不准确,因为有四种可能的月份长度,分别为28、29、30和31天。使用此方法与日期一起允许范围准确,返回这四个选项中的一个。有两种等效的使用此方法的方式。第一种是直接调用此方法。第二种是使用
TemporalAccessor.range(TemporalField):// 这两行是等效的,但建议使用第二种方法 temporal = thisField.rangeRefinedBy(temporal); temporal = temporal.range(thisField);
建议使用第二种方法range(TemporalField),因为在代码中更清晰易读。实现应使用
ChronoField中可用的字段执行任何查询或计算。如果不支持该字段,则必须抛出UnsupportedTemporalTypeException。- 指定者:
-
rangeRefinedBy在接口TemporalField - 参数:
-
temporal- 用于细化结果的时间对象,不能为空 - 返回:
- 此字段的有效值范围,不能为空
-
getFrom
从接口复制的描述:TemporalField从指定的时间对象获取此字段的值。查询时间对象的此字段的值。
有两种等效的使用此方法的方式。第一种是直接调用此方法。第二种是使用
TemporalAccessor.getLong(TemporalField)(或TemporalAccessor.get(TemporalField)):// 这两行是等效的,但建议使用第二种方法 temporal = thisField.getFrom(temporal); temporal = temporal.getLong(thisField);
建议使用第二种方法getLong(TemporalField),因为在代码中更清晰易读。实现应使用
ChronoField中可用的字段执行任何查询或计算。如果不支持该字段,则必须抛出UnsupportedTemporalTypeException。- 指定者:
-
getFrom在接口TemporalField - 参数:
-
temporal- 要查询的时间对象,不能为空 - 返回:
- 此字段的值,不能为空
-
adjustInto
从接口复制的描述:TemporalField返回具有设置此字段值的指定时间对象的副本。基于指定的时间对象返回一个新的时间对象,其中此字段的值已更改。例如,在
LocalDate上,可以用于设置年、月或日期。返回的对象具有与指定对象相同的可观察类型。在某些情况下,更改字段的定义不完全明确。例如,如果目标对象是代表1月31日的日期,则将月份更改为2月将是不清楚的。在这种情况下,实现负责解析结果。通常情况下,它将选择前一个有效日期,例如在此示例中为2月的最后一个有效日期。
有两种等效的使用此方法的方式。第一种是直接调用此方法。第二种是使用
Temporal.with(TemporalField, long):// 这两行是等效的,但建议使用第二种方法 temporal = thisField.adjustInto(temporal); temporal = temporal.with(thisField);
建议使用第二种方法with(TemporalField),因为在代码中更清晰易读。实现应使用
ChronoField中可用的字段执行任何查询或计算。如果不支持该字段,则必须抛出UnsupportedTemporalTypeException。实现不得更改指定的时间对象。而是必须返回原始对象的调整副本。这为不可变和可变实现提供了等效且安全的行为。
- 指定者:
-
adjustInto在接口TemporalField - 类型参数:
-
R- Temporal对象的类型 - 参数:
-
temporal- 要调整的时间对象,不能为空 -
newValue- 字段的新值 - 返回:
- 调整后的时间对象,不能为空
-
toString
从类复制的描述:Enum返回此枚举常量的名称,如声明中所包含的那样。虽然可以重写此方法,但通常不是必要或理想的。当存在更“程序员友好”的字符串形式时,枚举类应该重写此方法。- 指定者:
-
toString在接口TemporalField - 覆盖:
-
toString在类Enum<ChronoField> - 返回:
- 此枚举常量的名称
-