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

Class IsoChronology

  • 实现的所有接口
    SerializableComparable<Chronology>Chronology

    public final class IsoChronologyextends AbstractChronologyimplements Serializable
    ISO日历系统。

    此年表定义了ISO日历系统的规则。 该日历系统基于ISO-8601标准,该标准是事实上的世界日历。

    字段定义如下:

    • 时代 - 有两个时代,'当代时代'(CE)和'当前时代'(BCE)。
    • 年代 - 年代与当前CE时代的预感年相同。 对于ISO时代之前的BCE时代,随着时间的推移,年份从1上升。
    • 预感年 - 预感年与当前时代的年份相同。 对于前一个时代,年份为零,然后是负值。
    • 年份 - ISO年份有12个月,编号为1到12。
    • 每月的日期 - 每个ISO月份有28到31天,编号从1到31.第4,6,9和11个月有30天,第1,3,5,7,8,10个月和12有31天。 第2个月有28天,或闰年有29天。
    • 日期 - 标准ISO年份为365天,闰年为366天。 日期编号从1到365或1到366。
    • 闰年 - 闰年每4年发生一次,除非年份可以分为100而不能分400。
    实现要求:
    这个类是不可变的和线程安全的。
    从以下版本开始:
    1.8
    另请参见:
    Serialized Form
    • 字段详细信息

      • INSTANCE

        public static final IsoChronology INSTANCE
        ISO年表的单例实例。
    • 方法详细信息

      • getCalendarType

        public String getCalendarType()
        获取基础日历系统的日历类型 - 'iso8601'。

        日历类型是由Unicode区域设置数据标记语言(LDML)规范定义的标识符。 它可用于查找Chronology使用Chronology.of(String) 它也可以用作语言环境的一部分,可通过Locale.getUnicodeLocaleType(String)访问,键“ca”。

        Specified by:
        getCalendarType在界面 Chronology
        结果
        日历系统类型 - 'iso8601'
        另请参见:
        getId()
      • date

        public LocalDate date​(Era era,                      int yearOfEra,                      int month,                      int dayOfMonth)
        从时代,年份,月份和日期字段中获取ISO本地日期。
        Specified by:
        date ,界面 Chronology
        参数
        era - ISO时代,非空
        yearOfEra - ISO年代
        month - ISO的年月
        dayOfMonth - ISO日期
        结果
        ISO本地日期,不为空
        异常
        DateTimeException - 如果无法创建日期
        ClassCastException -如果类型 era不是 IsoEra
      • date

        public LocalDate date​(int prolepticYear,                      int month,                      int dayOfMonth)
        从预测年,月份和日期字段获得ISO本地日期。

        这相当于LocalDate.of(int, int, int)

        Specified by:
        date in interface Chronology
        参数
        prolepticYear - ISO prolepticYear
        month - ISO年月
        dayOfMonth - ISO日期
        结果
        ISO本地日期,不为空
        异常
        DateTimeException - 如果无法创建日期
      • dateYearDay

        public LocalDate dateYearDay​(Era era,                             int yearOfEra,                             int dayOfYear)
        从时代,年代和日期字段中获取ISO本地日期。
        Specified by:
        dateYearDay在界面 Chronology
        参数
        era - ISO时代,不是null
        yearOfEra - ISO年代
        dayOfYear - ISO日期
        结果
        ISO本地日期,不为空
        异常
        DateTimeException - 如果无法创建日期
      • dateYearDay

        public LocalDate dateYearDay​(int prolepticYear,                             int dayOfYear)
        从预测年和日期字段获得ISO本地日期。

        这相当于LocalDate.ofYearDay(int, int)

        Specified by:
        dateYearDay in interface Chronology
        参数
        prolepticYear - ISO prolepticYear
        dayOfYear - ISO日期
        结果
        ISO本地日期,不为空
        异常
        DateTimeException - 如果无法创建日期
      • epochSecond

        public long epochSecond​(int prolepticYear,                        int month,                        int dayOfMonth,                        int hour,                        int minute,                        int second,                        ZoneOffset zoneOffset)
        获取1970-01-01T00:00:00Z的纪元的秒数。

        使用年,月,日,小时,分钟,秒和zoneOffset计算秒数。

        Specified by:
        epochSecond在界面 Chronology
        参数
        prolepticYear - 年份,从MIN_YEAR到MAX_YEAR
        month - 一年中的一个月,从1到12
        dayOfMonth - 月份,从1到31
        hour - 从0到23的小时
        minute - 分钟,从0到59
        second - 第二分钟,从0到59
        zoneOffset - 区域偏移,不为空
        结果
        相对于1970-01-01T00:00:00Z的秒数,可能是负数
        异常
        DateTimeException - 如果任何参数的值超出范围,或者月中的某一天无效
        从以下版本开始:
        9
      • dateNow

        public LocalDate dateNow()
        在默认时区中从系统时钟获取当前ISO本地日期。

        这将在默认时区中查询system clock以获取当前日期。

        使用此方法将无法使用备用时钟进行测试,因为时钟是硬编码的。

        Specified by:
        dateNow在界面 Chronology
        结果
        使用系统时钟和默认时区的当前ISO本地日期,不为空
        异常
        DateTimeException - 如果无法创建日期
      • dateNow

        public LocalDate dateNow​(ZoneId zone)
        从指定时区的系统时钟获取当前ISO本地日期。

        这将查询system clock以获取当前日期。 指定时区可避免依赖于默认时区。

        使用此方法将无法使用备用时钟进行测试,因为时钟是硬编码的。

        Specified by:
        dateNow在界面 Chronology
        参数
        zone - 要使用的区域ID,不为空
        结果
        使用系统时钟的当前ISO本地日期,不为空
        异常
        DateTimeException - 如果无法创建日期
      • dateNow

        public LocalDate dateNow​(Clock clock)
        从指定的时钟获取当前的ISO本地日期。

        这将查询指定的时钟以获取当前日期 - 今天。 使用此方法允许使用备用时钟进行测试。 可以使用dependency injection引入备用时钟。

        Specified by:
        dateNow在界面 Chronology
        参数
        clock - 要使用的时钟,不为空
        结果
        当前的ISO本地日期,不为空
        异常
        DateTimeException - 如果无法创建日期
      • isLeapYear

        public boolean isLeapYear​(long prolepticYear)
        根据ISO符号日历系统规则,检查年份是否为闰年。

        此方法在整个时间线上应用闰年的当前规则。 一般来说,一年是闰年,如果它可以被4整除而没有余数。 然而,可以被100整除的年份不是闰年,除了可以被400整除的年份。

        例如,1904年是闰年,它可以被4整除.1900不是闰年,因为它可以被100整除,但2000年是闰年,因为它可以被400整除。

        计算是渐近的 - 将相同的规则应用到遥远的未来和远期。 这在历史上是不准确的,但对于ISO-8601标准是正确的。

        Specified by:
        isLeapYear在界面 Chronology
        参数
        prolepticYear - ISO检查的可 prolepticYear年份
        结果
        如果年份是飞跃则为true,否则为false
      • resolveDate

        public LocalDate resolveDate​(Map<TemporalField,​Long> fieldValues,                             ResolverStyle resolverStyle)
        解析在解析期间将ChronoField值解析为日期。

        使用该字段上的resolve方法解析大多数TemporalField实现。 相比之下, ChronoField类定义的字段仅具有相对于年表的含义。 因此,此处在特定年表的上下文中解析了ChronoField日期字段。

        ISO日历系统上的ChronoField实例解析如下。

        • EPOCH_DAY - 如果存在,则转换为LocalDate ,然后根据日期对所有其他日期字段进行交叉检查。
        • PROLEPTIC_MONTH - 如果存在,则将其拆分为YEARMONTH_OF_YEAR 如果模式严格或智能,则验证该字段。
        • YEAR_OF_ERAERA - 如果两者都存在,则将它们组合形成YEAR 在宽松模式下, YEAR_OF_ERA范围未经验证,在智能和严格模式下。 ERA在所有三种模式下均经过验证。 如果仅存在YEAR_OF_ERA ,并且模式为智能或宽松,则假定当前时代(CE / AD)。 在严格模式下,没有假设时代, YEAR_OF_ERA保持不变。 如果仅存在ERA ,则保持不变。
        • YEARMONTH_OF_YEARDAY_OF_MONTH -如果所有三个都存在,则它们被组合以形成LocalDate 在所有三种模式中, YEAR都经过验证。 如果模式是智能模式或严格模式,则验证月份和日期,验证日期为1到31.如果模式是宽松的,则日期的组合方式相当于创建1月1日的日期。请求的年份,然后添加月份差异,然后是天数的差异。 如果模式是智能的,并且日期大于年 - 月的最大值,那么将日期调整为最后一天。 如果模式是严格的,则三个字段必须形成有效日期。
        • YEARDAY_OF_YEAR - 如果两者都存在,则它们组合形成LocalDate 在所有三种模式中, YEAR都经过验证。 如果模式是宽松的,那么日期的组合方式相当于在请求年份的1月1日创建日期,然后添加天数差异。 如果模式是智能或严格,则两个字段必须形成有效日期。
        • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHALIGNED_DAY_OF_WEEK_IN_MONTH -如果所有四个都存在,则它们被组合以形成LocalDate 在所有三种模式中, YEAR都经过验证。 如果模式是宽松的,则日期的组合方式相当于在请求年份的1月1日创建日期,然后添加月份差异,然后是星期差异,然后是天数。 如果模式是智能模式或严格模式,则将所有四个字段验证到其外部范围。 然后以相当于在所请求的年份和月份的第一天创建日期的方式组合日期,然后以数周和天为单位添加金额以达到其值。 如果模式是严格的,则另外验证日期以检查日期和星期调整是否未改变月份。
        • YEARMONTH_OF_YEARALIGNED_WEEK_OF_MONTHDAY_OF_WEEK -如果所有四个都存在,则它们被组合以形成LocalDate 该方法与上述ALIGNED_DAY_OF_WEEK_IN_MONTH年,月和周ALIGNED_DAY_OF_WEEK_IN_MONTH 一旦处理了年,月和周,将星期几调整为下一个或相同的匹配日。
        • YEARALIGNED_WEEK_OF_YEARALIGNED_DAY_OF_WEEK_IN_YEAR -如果所有三个都存在,则它们被组合以形成LocalDate 在所有三种模式中, YEAR都经过验证。 如果模式是宽松的,则日期的组合方式相当于在请求年份的1月1日创建日期,然后以周为单位添加差异,然后以天为单位。 如果模式是智能模式或严格模式,则所有三个字段都将验证其外部范围。 然后以相当于在所请求年份的第一天创建日期的方式组合日期,然后以数周和天为单位添加金额以达到其值。 如果模式是严格的,则另外验证日期以检查日期和星期调整是否未改变年份。
        • YEARALIGNED_WEEK_OF_YEARDAY_OF_WEEK -如果所有三个都存在,则它们被组合以形成LocalDate 该方法与上述ALIGNED_DAY_OF_WEEK_IN_YEAR数年ALIGNED_DAY_OF_WEEK_IN_YEARALIGNED_DAY_OF_WEEK_IN_YEAR 一旦处理了年份和周数,将星期几调整为下一个或相同的匹配日。
        Specified by:
        resolveDate在界面 Chronology
        重写:
        resolveDate在课程 AbstractChronology
        参数
        fieldValues - 值的字段映射,可以更新,而不是null
        resolverStyle - 请求的解析类型,不为null
        结果
        已解决的日期,如果创建日期的信息不足,则为null
        异常
        DateTimeException - 如果无法解析日期,通常是因为输入数据存在冲突
      • period

        public Period period​(int years,                     int months,                     int days)
        根据年,月和日获得此年表的时间段。

        这将使用指定的年,月和日返回与ISO年表关联的句点。 有关更多详细信息,请参见Period

        Specified by:
        period在界面 Chronology
        参数
        years - 年数,可能是负数
        months - 年数,可能是负数
        days - 年数,可能是负数
        结果
        这个年表的时期,不是空的