模块  java.base
软件包  java.time.temporal

Enum ChronoField

  • 实现的所有接口
    SerializableComparable<ChronoField>TemporalField

    public enum ChronoFieldextends Enum<ChronoField>implements TemporalField
    一组标准字段。

    这组字段提供基于字段的访问来操纵日期,时间或日期时间。 可以通过实现TemporalField来扩展标准字段集。

    这些字段旨在适用于多个日历系统。 例如,大多数非ISO日历系统将日期定义为年,月和日,只是略有不同的规则。 每个字段的文档说明了它的运作方式。

    实现要求:
    这是一个最终的,不可变的和线程安全的枚举。
    从以下版本开始:
    1.8
    • Enum Constant Detail

      • NANO_OF_SECOND

        public static final ChronoField NANO_OF_SECOND
        纳秒秒。

        这计算在秒内的纳秒,从0到999,999,999。 该字段对于所有日历系统具有相同的含义。

        该字段用于表示第二秒的任何部分的纳秒级处理。 的实现TemporalAccessor应该为这一领域提供一个值,如果他们可以返回一个值SECOND_OF_MINUTESECOND_OF_DAYINSTANT_SECONDS灌装精度不明零。

        当此字段用于设置值时,应设置与对象存储一样多的精度,使用整数除法删除多余的精度。 例如,如果TemporalAccessor存储精确到毫秒级的时间,那么在替换毫秒之前必须将纳秒除以1,000,000。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该字段与MILLI_OF_SECONDMICRO_OF_SECOND结合使用。

      • NANO_OF_DAY

        public static final ChronoField NANO_OF_DAY
        纳米的一天。

        这计算当天的纳秒,从0到(24 * 60 * 60 * 1,000,000,000) - 1.该字段对于所有日历系统具有相同的含义。

        该字段用于表示每秒处理纳秒的任何部分。 TemporalAccessor实现应该为该字段提供一个值,如果它们可以返回SECOND_OF_DAY的值,用零填充未知精度。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该值将被分割,以形成NANO_OF_SECONDSECOND_OF_MINUTEMINUTE_OF_HOURHOUR_OF_DAY字段。

      • MICRO_OF_SECOND

        public static final ChronoField MICRO_OF_SECOND
        微秒。

        这计算在秒内的微秒,从0到999,999。 该字段对于所有日历系统具有相同的含义。

        该字段用于表示秒的微秒处理。 的实现TemporalAccessor应该为这一领域提供一个值,如果他们可以返回一个值SECOND_OF_MINUTESECOND_OF_DAYINSTANT_SECONDS灌装精度不明零。

        当此字段用于设置值时,其行为应与设置NANO_OF_SECOND方式相同,其值乘以1,000。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该领域与MILLI_OF_SECOND结合使用以生产NANO_OF_SECOND

      • MICRO_OF_DAY

        public static final ChronoField MICRO_OF_DAY
        微观的一天。

        这计算当天的微秒,从0到(24 * 60 * 60 * 1,000,000) - 1.此字段对于所有日历系统具有相同的含义。

        该字段用于表示微秒处理第二部分的任何部分。 TemporalAccessor实现应该为该字段提供值,如果它们可以返回SECOND_OF_DAY的值,用零填充未知精度。

        当此字段用于设置值时,其行为应与设置NANO_OF_DAY方式相同,其值乘以1,000。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该值将被分割,以形成MICRO_OF_SECONDSECOND_OF_MINUTEMINUTE_OF_HOURHOUR_OF_DAY字段。

      • MILLI_OF_SECOND

        public static final ChronoField MILLI_OF_SECOND
        毫秒。

        这将计算秒内的毫秒数,从0到999.此字段对于所有日历系统具有相同的含义。

        该字段用于表示秒的任何部分的毫秒级处理。 的实现TemporalAccessor应该为这一领域提供一个值,如果他们可以返回一个值SECOND_OF_MINUTESECOND_OF_DAYINSTANT_SECONDS灌装精度不明零。

        当此字段用于设置值时,其行为应与设置NANO_OF_SECOND方式相同,其值乘以1,000,000。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该领域与MICRO_OF_SECOND结合使用以产生NANO_OF_SECOND

      • MILLI_OF_DAY

        public static final ChronoField MILLI_OF_DAY
        毫无疑问。

        这计算当天的毫秒数,从0到(24 * 60 * 60 * 1,000) - 1.此字段对所有日历系统具有相同的含义。

        该字段用于表示毫秒级处理第二部分的任何部分。 TemporalAccessor实现应该为该字段提供值,如果它们可以返回SECOND_OF_DAY的值,用零填充未知精度。

        当此字段用于设置值时,其行为应与设置NANO_OF_DAY方式相同,其值乘以1,000,000。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该值将被分割,以形成MILLI_OF_SECONDSECOND_OF_MINUTEMINUTE_OF_HOURHOUR_OF_DAY字段。

      • SECOND_OF_MINUTE

        public static final ChronoField SECOND_OF_MINUTE
        第二分钟。

        这将计算分钟内的秒数,从0到59.此字段对所有日历系统具有相同的含义。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。

      • SECOND_OF_DAY

        public static final ChronoField SECOND_OF_DAY
        第二天。

        这将计算当天的秒数,从0到(24 * 60 * 60) - 1.此字段对所有日历系统具有相同的含义。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该值将被分割,以形成SECOND_OF_MINUTEMINUTE_OF_HOURHOUR_OF_DAY字段。

      • MINUTE_OF_HOUR

        public static final ChronoField MINUTE_OF_HOUR
        分钟。

        这会计算一小时内的分钟,从0到59.此字段对所有日历系统具有相同的含义。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。

      • MINUTE_OF_DAY

        public static final ChronoField MINUTE_OF_DAY
        分钟。

        这计算一天中的分钟,从0到(24 * 60) - 1.此字段对所有日历系统具有相同的含义。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该值被拆分为MINUTE_OF_HOURHOUR_OF_DAY字段。

      • HOUR_OF_AMPM

        public static final ChronoField HOUR_OF_AMPM
        上午的时间。

        这将计算AM / PM内的小时数,从0到11.这是在标准的12小时数字时钟上观察到的小时数。 该字段对于所有日历系统具有相同的含义。

        解析此字段时,其行为与以下内容相同:在严格和智能模式下,该值的验证范围为0到11。 在宽松模式下,该值未经过验证。 通过将{AMPM_OF_DAY}值乘以12,将其与AMPM_OF_DAY组合形成HOUR_OF_DAY

        有关从1到12计算小时数的相关字段,请参阅CLOCK_HOUR_OF_AMPM

      • CLOCK_HOUR_OF_AMPM

        public static final ChronoField CLOCK_HOUR_OF_AMPM
        上午时钟小时。

        这将计算AM / PM内的小时数,从1到12.这是在标准的12小时模拟挂钟上观察到的小时数。 该字段对于所有日历系统具有相同的含义。

        解析此字段时,其行为等效于以下内容:在严格模式下验证值为1到12,在智能模式下验证值为0到12。 在宽松模式下,该值未经过验证。 该字段将转换为具有相同值的HOUR_OF_AMPM ,除非该值为12,在这种情况下,它将转换为0。

        有关从0到11计算小时数的相关字段,请参阅HOUR_OF_AMPM

      • HOUR_OF_DAY

        public static final ChronoField HOUR_OF_DAY
        一天的时间。

        这计算一天中的小时,从0到23.这是在标准的24小时数字时钟上观察到的小时。 该字段对于所有日历系统具有相同的含义。

        解析此字段时,其行为等效于以下内容:该值在严格模式和智能模式下验证,但不在宽松模式下验证。 该字段与组合MINUTE_OF_HOURSECOND_OF_MINUTENANO_OF_SECOND以产生LocalTime 在宽松模式下,任何多余的天数都会添加到解析日期,或通过DateTimeFormatter.parsedExcessDays()提供

        有关从1到24计算小时数的相关字段,请参阅CLOCK_HOUR_OF_DAY

      • CLOCK_HOUR_OF_DAY

        public static final ChronoField CLOCK_HOUR_OF_DAY
        时钟 - 小时。

        这计算一天中的小时,从1到24.这是在24小时模拟挂钟上观察到的小时。 该字段对于所有日历系统具有相同的含义。

        解析此字段时,其行为与以下内容等效:在严格模式下验证值为1到24,在智能模式下验证值为0到24。 在宽松模式下,该值未经过验证。 除非值为24,否则该字段将转换为具有相同值的HOUR_OF_DAY ,在这种情况下,它将转换为0。

        有关从0到23计算小时数的相关字段,请参阅HOUR_OF_DAY

      • AMPM_OF_DAY

        public static final ChronoField AMPM_OF_DAY
        每天上午。

        这计算当天的AM / PM,从0(AM)到1(PM)。 该字段对于所有日历系统具有相同的含义。

        解析此字段时,其行为等效于以下内容:在严格和智能模式下,该值的验证范围为0到1。 在宽松模式下,该值未经过验证。 通过将{AMPM_OF_DAY}值乘以12,将其与HOUR_OF_AMPM组合以形成HOUR_OF_DAY

      • DAY_OF_WEEK

        public static final ChronoField DAY_OF_WEEK
        星期几,例如星期二。

        这代表了星期几的标准概念。 在默认的ISO日历系统中,它具有从星期一(1)到星期日(7)的值。 DayOfWeek类可用于解释结果。

        大多数非ISO日历系统还定义了与ISO一致的七天工作周。 这些日历系统还必须使用相同的编号系统,从星期一(1)到星期日(7),允许使用DayOfWeek

        没有标准七天工作周的日历系统应该实现此字段,如果他们在类似于一周的时间段内具有类似的命名或编号天数概念。 建议编号从1开始。

      • ALIGNED_DAY_OF_WEEK_IN_MONTH

        public static final ChronoField ALIGNED_DAY_OF_WEEK_IN_MONTH
        一个月内对齐的星期几。

        这表示星期与月初对齐的一周内的天数的概念。 该字段通常与ALIGNED_WEEK_OF_MONTH一起使用

        例如,在具有七天工作周的日历系统中,第一个对齐的周工作日开始于第1个月,第二个对齐工作周从第8个月开始,依此类推。 在每个对齐周内,日期从1到7编号,并作为此字段的值返回。 因此,每月的1到7天将具有从1到7的星期值对齐。并且每月8到14天将重复此操作,其中每周的对齐值从1到1 7。

        没有七天工作周的日历系统通常应以相同的方式实现此字段,但使用备用周长度。

      • ALIGNED_DAY_OF_WEEK_IN_YEAR

        public static final ChronoField ALIGNED_DAY_OF_WEEK_IN_YEAR
        一年内对齐的星期几。

        这表示在一周内将周数与年初对齐的天数的概念。 该字段通常与ALIGNED_WEEK_OF_YEAR一起使用

        例如,在具有七天工作周的日历系统中,第一个对齐周开始于第一年的第一天,第二个对齐周开始于第八年的日期,依此类推。 在每个对齐周内,日期从1到7编号,并作为此字段的值返回。 因此,第1年到第7年的每周日期值将从1到7保持一致。而日期8到14将重复此操作,并且每周的对齐值从1到1 7。

        没有七天工作周的日历系统通常应以相同的方式实现此字段,但使用备用周长度。

      • DAY_OF_MONTH

        public static final ChronoField DAY_OF_MONTH
        这个月的日子。

        这代表了当月内的概念。 在默认的ISO日历系统中,大多数月份的值为1到31。 4月,6月,9月,11月的日期为1至30天,而2月的日期为1至28天,或闰年为29天。

        非ISO日历系统应使用日历系统用户最常识别的日期值来实现此字段。 通常,这是从1到月长的天数。

      • DAY_OF_YEAR

        public static final ChronoField DAY_OF_YEAR
        这一天。

        这代表了一年中的一天的概念。 在默认的ISO日历系统中,标准年份的值为1到365,闰年的值为1到366。

        非ISO日历系统应使用日历系统用户最常识别的日期值来实现此字段。 通常,这是从1到年长的天数。

        请注意,非ISO日历系统可能具有年份编号系统,该系统在与月份编号中的自然重置不同的点处更改。 一个例子是日本日历系统,其中时代的变化将年份数重置为1,可以在任何日期发生。 时代和年份重置也会导致日期重置为1,但不会重置为月份或日期。

      • EPOCH_DAY

        public static final ChronoField EPOCH_DAY
        该纪元日,基于1970-01-01(ISO)的Java时代。

        此字段是1970-01-01(ISO)为零的连续天数。 请注意,这使用本地时间线,忽略偏移和时区。

        该字段严格定义为在所有日历系统中具有相同含义。 这对于确保日历之间的互操作是必要的。

        EpochDay的范围介于(LocalDate.MIN.toEpochDay(),LocalDate.MAX.toEpochDay())之间。

      • ALIGNED_WEEK_OF_MONTH

        public static final ChronoField ALIGNED_WEEK_OF_MONTH
        一个月内对齐的一周。

        这表示在一个月内将周数与月初对齐的周数的概念。 该字段通常与ALIGNED_DAY_OF_WEEK_IN_MONTH一起使用

        例如,在具有七天工作周的日历系统中,第一个对齐的周工作日开始于第1个月,第二个对齐工作周从第8个月开始,依此类推。 因此,日期值1到7在对齐的第1周中,而日期值8到14在对齐的第2周中,依此类推。

        没有七天工作周的日历系统通常应以相同的方式实现此字段,但使用备用周长度。

      • ALIGNED_WEEK_OF_YEAR

        public static final ChronoField ALIGNED_WEEK_OF_YEAR
        一年内对齐的一周。

        这表示一周内的周数的概念,其中周数与年初对齐。 该字段通常与ALIGNED_DAY_OF_WEEK_IN_YEAR一起使用

        例如,在具有七天工作周的日历系统中,第一个对齐周开始于第一年的第一天,第二个对齐周开始于第八年的日期,依此类推。 因此,日期值1到7在对齐的周1中,而日期值8到14在对齐的周2中,依此类推。

        没有七天工作周的日历系统通常应以相同的方式实现此字段,但使用备用周长度。

      • MONTH_OF_YEAR

        public static final ChronoField MONTH_OF_YEAR
        一年中的月份,例如三月。

        这代表了一年中的月份概念。 在默认的ISO日历系统中,它具有从1月(1)到12月(12)的值。

        非ISO日历系统应使用日历系统用户最常识别的月份值来实现此字段。 通常,这是从1开始的月数。

      • PROLEPTIC_MONTH

        public static final ChronoField PROLEPTIC_MONTH
        基于预感月,从0年开始按月计数。

        该字段是月份的连续计数,其中在预感年零的第一个月具有零值。 后来几个月的价值越来越大。 早些月的价值越来越小。 几个月的顺序没有间隙或中断。 请注意,这使用本地时间线,忽略偏移和时区。

        在默认的ISO日历系统中,2012年6月的值为(2012 * 12 + 6 - 1) 该字段主要供内部使用。

        非ISO日历系统必须按照上面的定义实现此字段。 它只是从预感0年开始经过几个月的简单零基数。所有具有完整的预感年定义的日历系统将具有零年。 如果日历系统的最小年份不包括零年份,则必须外推一个,以便定义此方法。

      • YEAR_OF_ERA

        public static final ChronoField YEAR_OF_ERA
        这个时代的一年。

        这代表了时代内的年度概念。 该字段通常与ERA一起使用

        日期的标准心理模型基于三个概念 - 年,月和日。 这些映射到YEARMONTH_OF_YEARDAY_OF_MONTH领域。 请注意,没有提及时代。 日期的完整模型需要四个概念 - 时代,年,月和日。 这些映射到ERAYEAR_OF_ERAMONTH_OF_YEARDAY_OF_MONTH领域。 是否使用此字段或YEAR取决于使用的心智模型。 有关此主题的更多讨论,请参见ChronoLocalDate

        在默认的ISO日历系统中,有两个定义的时间,'BCE'和'CE'。 时代'CE'是目前正在使用的时代,时代的年代从1到最大值。 'BCE'时代是前一个时代,时代倒退。

        例如,每次减去一年产生以下结果:
        - 年度保证2 ='CE'年代2
        - 年度保证1 ='CE'年代1
        - 年度保证0 ='BCE'年代1
        - 年 - 保证-1 ='BCE'年代2

        请注意,ISO-8601标准实际上并未定义时代。 另请注意,由于Julian和Gregorian日历系统之间的变化,ISO时代与众所周知的AD / BC时代不一致。

        非ISO日历系统应使用日历系统用户最公认的年份值来实现此字段。 由于大多数日历系统只有两个时代,因此年代编号方法通常与ISO日历系统使用的相同。 时代的价值通常应该是正值,但这不是必需的。

      • YEAR

        public static final ChronoField YEAR
        即将到来的一年,如2012年。

        这代表了年份的概念,按顺序计数并使用负数。 这个时代的解释并不是对这个时代的解释。 请参阅YEAR_OF_ERA ,以获取显示从无效年份到年份的映射的示例。

        日期的标准心理模型基于三个概念 - 年,月和日。 这些映射到YEARMONTH_OF_YEARDAY_OF_MONTH领域。 请注意,没有提及时代。 日期的完整模型需要四个概念 - 时代,年,月和日。 这些映射到ERAYEAR_OF_ERAMONTH_OF_YEARDAY_OF_MONTH领域。 是否使用此字段或YEAR_OF_ERA取决于正在使用的心智模型。 有关此主题的更多讨论,请参见ChronoLocalDate

        非ISO日历系统应按如下方式实现此字段。 如果日历系统在固定日期之前和之后只有两个时代,那么预感年值必须与后一时代的年代价值相同,并且对于早期时代越来越不利。 如果日历系统具有两个以上的时间,那么可以用任何适当的值来定义预感年值,尽管将其定义为与ISO相同可能是最佳选择。

      • ERA

        public static final ChronoField ERA
        时代。

        这代表了时代的概念,这是时间线的最大分支。 该字段通常与YEAR_OF_ERA一起使用

        在默认的ISO日历系统中,有两个定义的时间,'BCE'和'CE'。 时代'CE'是目前正在使用的时代,时代的年代从1到最大值。 'BCE'时代是前一个时代,时代倒退。 有关完整示例,请参见YEAR_OF_ERA

        非ISO日历系统应实现此字段以定义时代。 必须为1970-01-01(ISO)上激活的时代的值赋值1.早期的时间必须具有连续的较小值。 后来的时代必须有更大的值,

      • INSTANT_SECONDS

        public static final ChronoField INSTANT_SECONDS
        即时纪元。

        这表示1970-01-01T00:00Z(ISO)为零的连续秒数的概念。 该字段可以与NANO_OF_SECOND一起使用以表示第二个的分数。

        Instant表示时间线上的瞬时点。 就其本身而言,瞬间没有足够的信息来允许获得本地日期时间。 只有与偏移或时区配对才能计算本地日期或时间。

        该字段严格定义为在所有日历系统中具有相同含义。 这对于确保日历之间的互操作是必要的。

      • OFFSET_SECONDS

        public static final ChronoField OFFSET_SECONDS
        与UTC / Greenwich的偏差。

        这代表了UTC / Greenwich当地时间偏移量的概念。

        ZoneOffset表示当地时间与UTC /格林威治不同的时间段。 这通常是固定的小时数和分钟数。 它相当于以秒为单位的偏移量的total amount 例如,在冬季,巴黎的偏移量为+01:00 ,即3600秒。

        该字段严格定义为在所有日历系统中具有相同含义。 这对于确保日历之间的互操作是必要的。

    • 方法详细信息

      • values

        public static ChronoField[] values()
        按照声明的顺序返回一个包含此枚举类型常量的数组。 此方法可用于迭代常量,如下所示:
          for (ChronoField c : ChronoField.values())    System.out.println(c); 
        结果
        包含此枚举类型常量的数组,按声明的顺序排列
      • valueOf

        public static ChronoField valueOf​(String name)
        返回具有指定名称的此类型的枚举常量。 该字符串必须与用于声明此类型中的枚举常量的标识符完全匹配。 (不允许使用无关的空白字符。)
        参数
        name - 要返回的枚举常量的名称。
        结果
        具有指定名称的枚举常量
        异常
        IllegalArgumentException - 如果此枚举类型没有具有指定名称的常量
        NullPointerException - 如果参数为null
      • range

        public ValueRange range()
        获取该字段的有效值范围。

        所有字段都可以表示为long整数。 此方法返回描述该值的有效范围的对象。

        此方法返回ISO-8601日历系统中字段的范围。 对于其他日历系统,此范围可能不正确。 使用Chronology.range(ChronoField)访问其他日历系统的正确范围。

        请注意,结果仅描述了最小和最大有效值,重要的是不要过多地阅读它们。 例如,该范围内的值可能对该字段无效。

        Specified by:
        range在界面 TemporalField
        结果
        字段的有效值范围,不为null
      • isDateBased

        public boolean isDateBased()
        检查此字段是否表示日期的组成部分。

        从星期几到星期的字段都是基于日期的。

        Specified by:
        isDateBased在界面 TemporalField
        结果
        如果它是日期的组成部分,则为true
      • isTimeBased

        public boolean isTimeBased()
        检查此字段是否表示时间的组成部分。

        从纳秒到每天下午的字段是基于时间的。

        Specified by:
        isTimeBased in interface 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 - 要检查的值
        结果
        传入的值