- 所有已实现的接口:
-
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 ConstantDescription月内对齐的星期几。年内对齐的星期几。月内对齐的周。年内对齐的周。上午下午。上午下午的时钟小时。一天中的时钟小时。月中的日期。一周中的星期几,例如星期二。一年中的日期。基于Java纪元1970-01-01(ISO)的纪元日。纪元。上午下午的小时。一天中的小时。瞬时纪元秒。一天中的微秒。秒内的微秒。一天中的毫秒。秒内的毫秒。一天中的分钟。小时内的分钟。一年中的月份,例如三月。一天中的纳秒。秒内的纳秒。与UTC /格林威治的偏移量。基于顺序计算的纪元月。一天中的秒。分钟内的秒。纪元年,例如2012年。纪元内的年份。 -
Method Summary
Modifier and TypeMethodDescription<R extends Temporal>
RadjustInto
(R temporal, long newValue) 返回具有设置为此字段值的指定时间对象的副本。int
checkValidIntValue
(long value) 检查指定值是否有效并适合于int
。long
checkValidValue
(long value) 检查指定值是否适用于此字段。获取字段的计量单位。long
getFrom
(TemporalAccessor temporal) 从指定的时间对象获取此字段的值。获取字段受限的范围。boolean
检查此字段是否表示日期的一个组成部分。boolean
isSupportedBy
(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, valueOf
Methods 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>
- 返回:
- 此枚举常量的名称
-