- 所有已实现的接口:
Serializable,Comparable<Chronology>,Chronology
该年表定义了 ISO 日历系统的规则。该日历系统基于 ISO-8601 标准,即事实上的世界日历。
字段定义如下:
- 时代 - 有两个时代,“当前时代”(CE) 和“当前时代之前”(BCE)。
- 纪元年 - 纪元年与当前 CE 纪元的预测年相同。对于 ISO 时代之前的 BCE 时代,随着时间倒退,年份从 1 向上增加。
- proleptic-year - proleptic 年与当前纪元的纪元年相同。对于前一个时代,年份为零,然后为负值。
- month-of-year - ISO 年有 12 个月,编号从 1 到 12。
- day-of-month - 每个 ISO 月份有 28 到 31 天,编号从 1 到 31。第 4、6、9 和 11 个月有 30 天,第 1、3、5、7、8、10 个月12 有 31 天。第 2 个月有 28 天,闰年为 29 天。
- day-of-year - 标准 ISO 年有 365 天,闰年有 366 天。天数从 1 到 365 或 1 到 366。
- 闰年 - 闰年每 4 年出现一次,除非年份可以被 100 整除且不能被 400 整除。
- 实现要求:
- 这个类是不可变的和线程安全的。
- 自从:
- 1.8
- 参见:
-
字段摘要
字段 -
方法总结
修饰符和类型方法描述date(int prolepticYear, int month, int dayOfMonth) 从预测年、年月和月日字段中获取 ISO 本地日期。从纪元、纪元年、年月和月日字段获取 ISO 本地日期。date(TemporalAccessor temporal) 从另一个日期时间对象获取 ISO 本地日期。dateEpochDay(long epochDay) 从纪元日获取 ISO 本地日期。dateNow()从默认时区的系统时钟获取当前 ISO 本地日期。从指定时钟获取当前 ISO 本地日期。从指定时区的系统时钟获取当前 ISO 本地日期。dateYearDay(int prolepticYear, int dayOfYear) 从 proleptic-year 和 day-of-year 字段中获取 ISO 本地日期。dateYearDay(Era era, int yearOfEra, int dayOfYear) 从时代、时代年份和年份字段中获取 ISO 本地日期。longepochSecond(int prolepticYear, int month, int dayOfMonth, int hour, int minute, int second, ZoneOffset zoneOffset) 从 1970-01-01T00:00:00Z 的纪元获取秒数。eraOf(int eraValue) 从数值创建年代对象。eras()获取年表的纪元列表。获取基础日历系统的日历类型 - 'iso8601'。getId()获取年表的 ID - 'ISO'。booleanbooleanisLeapYear(long prolepticYear) 根据 ISO proleptic 日历系统规则,检查年份是否为闰年。localDateTime(TemporalAccessor temporal) 从另一个日期时间对象获取 ISO 本地日期时间。period(int years, int months, int days) 根据年、月和日获取此年表的周期。intprolepticYear(Era era, int yearOfEra) 计算给定时代和时代的预期年份。range(ChronoField field) 获取指定字段的有效值范围。resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle) 在解析期间将已解析的ChronoField值解析为日期。zonedDateTime(Instant instant, ZoneId zone) 从Instant获取此年表中的 ISO 分区日期时间。zonedDateTime(TemporalAccessor temporal) 从另一个日期时间对象获取 ISO 分区日期时间。在类 java.time.chrono.AbstractChronology 中声明的方法
compareTo, equals, hashCode, toString在接口 java.time.chrono.Chronology 中声明的方法
epochSecond, getDisplayName
-
字段详细信息
-
INSTANCE
ISO 年表的单例实例。
-
-
方法详情
-
getId
获取年表的 ID - 'ISO'。ID 唯一标识
Chronology。它可用于使用Chronology.of(String)查找Chronology。- 指定者:
getId在接口Chronology中- 返回:
- 年表 ID - 'ISO'
- 参见:
-
getCalendarType
获取基础日历系统的日历类型 - 'iso8601'。日历类型是由 Unicode Locale Data Markup Language (LDML) 规范定义的标识符。它可用于使用
Chronology.of(String)查找Chronology。它也可以用作区域设置的一部分,可通过Locale.getUnicodeLocaleType(String)使用键“ca”访问。- 指定者:
getCalendarType在接口Chronology中- 返回:
- 日历系统类型 - 'iso8601'
- 参见:
-
date
从纪元、纪元年、年月和月日字段获取 ISO 本地日期。- 指定者:
date在接口Chronology中- 参数:
era- ISO 时代,不为空yearOfEra- ISO 时代month- ISO 月份dayOfMonth- ISO 日期- 返回:
- ISO 本地日期,不为空
- 抛出:
DateTimeException- 如果无法创建日期ClassCastException- 如果era的类型不是IsoEra
-
date
从预测年、年月和月日字段中获取 ISO 本地日期。这相当于
LocalDate.of(int, int, int)。- 指定者:
date在接口Chronology中- 参数:
prolepticYear- ISO 预测年month- ISO 月份dayOfMonth- ISO 日期- 返回:
- ISO 本地日期,不为空
- 抛出:
DateTimeException- 如果无法创建日期
-
dateYearDay
从时代、时代年份和年份字段中获取 ISO 本地日期。- 指定者:
dateYearDay在接口Chronology中- 参数:
era- ISO 时代,不为空yearOfEra- ISO 时代dayOfYear- ISO 日期- 返回:
- ISO 本地日期,不为空
- 抛出:
DateTimeException- 如果无法创建日期
-
dateYearDay
从 proleptic-year 和 day-of-year 字段中获取 ISO 本地日期。- 指定者:
dateYearDay在接口Chronology中- 参数:
prolepticYear- ISO 预测年dayOfYear- ISO 日期- 返回:
- ISO 本地日期,不为空
- 抛出:
DateTimeException- 如果无法创建日期
-
dateEpochDay
从纪元日获取 ISO 本地日期。这相当于
LocalDate.ofEpochDay(long)。- 指定者:
dateEpochDay在接口Chronology中- 参数:
epochDay- 纪元日- 返回:
- ISO 本地日期,不为空
- 抛出:
DateTimeException- 如果无法创建日期
-
date
从另一个日期时间对象获取 ISO 本地日期。- 指定者:
date在接口Chronology中- 参数:
temporal- 要转换的日期时间对象,不为空- 返回:
- 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 计算的。
- 指定者:
epochSecond在接口Chronology中- 参数:
prolepticYear- 年份,从 MIN_YEAR 到 MAX_YEARmonth- 一年中的月份,从 1 到 12dayOfMonth- 一个月中的第几天,从 1 到 31hour- 一天中的小时,从 0 到 23minute- 小时,从 0 到 59second- 秒数,从 0 到 59zoneOffset- 区域偏移量,不为空- 返回:
- 相对于 1970-01-01T00:00:00Z 的秒数,可能为负数
- 抛出:
DateTimeException- 如果任何参数的值超出范围,或者如果月中的日期对于年中的月份无效- 自从:
- 9
-
localDateTime
从另一个日期时间对象获取 ISO 本地日期时间。- 指定者:
localDateTime在接口Chronology中- 参数:
temporal- 要转换的日期时间对象,不为空- 返回:
- ISO 本地日期时间,不为空
- 抛出:
DateTimeException- 如果无法创建日期时间- 参见:
-
zonedDateTime
从另一个日期时间对象获取 ISO 分区日期时间。- 指定者:
zonedDateTime在接口Chronology中- 参数:
temporal- 要转换的日期时间对象,不为空- 返回:
- ISO 分区日期时间,不为空
- 抛出:
DateTimeException- 如果无法创建日期时间- 参见:
-
zonedDateTime
从Instant获取此年表中的 ISO 分区日期时间。- 指定者:
zonedDateTime在接口Chronology中- 参数:
instant- 创建日期时间的时刻,不为空zone- 时区,不为空- 返回:
- 分区日期时间,不为空
- 抛出:
DateTimeException- 如果结果超出支持的范围
-
dateNow
从默认时区的系统时钟获取当前 ISO 本地日期。这将在默认时区查询
system clock以获取当前日期。使用此方法将阻止使用备用时钟进行测试的能力,因为时钟是硬编码的。
- 指定者:
dateNow在接口Chronology中- 返回:
- 使用系统时钟和默认时区的当前 ISO 本地日期,不为空
- 抛出:
DateTimeException- 如果无法创建日期
-
dateNow
从指定时区的系统时钟获取当前 ISO 本地日期。这将查询
system clock以获取当前日期。指定时区避免了对默认时区的依赖。使用此方法将阻止使用备用时钟进行测试的能力,因为时钟是硬编码的。
- 指定者:
dateNow在接口Chronology中- 参数:
zone- 要使用的区域 ID,不为空- 返回:
- 使用系统时钟的当前 ISO 本地日期,不为空
- 抛出:
DateTimeException- 如果无法创建日期
-
dateNow
从指定时钟获取当前 ISO 本地日期。这将查询指定的时钟以获取当前日期 - 今天。使用此方法允许使用备用时钟进行测试。可以使用
dependency injection引入备用时钟。- 指定者:
dateNow在接口Chronology中- 参数:
clock- 使用的时钟,不为空- 返回:
- 当前 ISO 本地日期,不为空
- 抛出:
DateTimeException- 如果无法创建日期
-
isLeapYear
public boolean isLeapYear(long prolepticYear) 根据 ISO proleptic 日历系统规则,检查年份是否为闰年。此方法在整个时间线上应用当前的闰年规则。一般来说,如果年份可以被四整除而没有余数,则为闰年。但是,能被 100 整除的年份不是闰年,但能被 400 整除的年份除外。
例如,1904 是闰年,它可以被 4 整除。1900 不是闰年,因为它可以被 100 整除,但是 2000 是闰年,因为它可以被 400 整除。
计算是有前瞻性的——将相同的规则应用到遥远的未来和遥远的过去。这在历史上是不准确的,但对于 ISO-8601 标准是正确的。
- 指定者:
isLeapYear在接口Chronology中- 参数:
prolepticYear- 要检查的 ISO 预期年份- 返回:
- 如果年份是闰年则为 true,否则为 false
-
prolepticYear
从接口Chronology复制的描述计算给定时代和时代的预期年份。这将时代和时代结合到单一的预测年字段。
如果年表积极使用纪元,例如
JapaneseChronology,那么纪元年将根据纪元进行验证。对于其他年表,验证是可选的。- 指定者:
prolepticYear在接口Chronology中- 参数:
era- 年表正确类型的时代,不为空yearOfEra- 纪年年代- 返回:
- 推算年份
-
eraOf
从接口Chronology复制的描述从数值创建年代对象。从概念上讲,时代是时间线的最大划分。大多数日历系统都有一个纪元,将时间线分为两个纪元。然而,有些有多个时代,例如每个领导人的统治时期。确切的含义由年表根据以下限制确定。
在 1970-01-01 使用的纪元必须具有值 1。后面的纪元必须依次具有更高的值。较早的时代必须具有顺序较低的值。每个年表必须引用一个枚举或类似的单例来提供时代值。
此方法返回指定纪元值的正确类型的单例纪元。
- 指定者:
eraOf在接口Chronology中- 参数:
eraValue- 时代值- 返回:
- 日历系统时代,不为空
-
eras
从接口Chronology复制的描述获取年表的纪元列表。大多数日历系统都有一个时代,其中年份具有意义。如果日历系统不支持时代的概念,则必须返回一个空列表。
- 指定者:
eras在接口Chronology中- 返回:
- 年表的时代列表,可能是不可变的,不为空
-
resolveDate
在解析期间将已解析的ChronoField值解析为日期。大多数
TemporalField实现都是使用字段上的 resolve 方法解析的。相比之下,ChronoField类定义的字段仅与年表相关。因此,ChronoField日期字段在特定年表的上下文中在此处解析。ChronoFieldISO 日历系统上的实例解析如下。EPOCH_DAY- 如果存在,则将其转换为LocalDate,然后根据日期交叉检查所有其他日期字段。PROLEPTIC_MONTH- 如果存在,则将其拆分为YEAR和MONTH_OF_YEAR。如果模式是严格的或智能的,则验证该字段。YEAR_OF_ERA和ERA- 如果两者都存在,则它们组合起来形成一个YEAR。在宽松模式下,YEAR_OF_ERA范围未被验证,在智能和严格模式下它是。ERA在所有三种模式下都针对范围进行了验证。如果只有YEAR_OF_ERA存在,并且模式是 smart 或 lenient,则假定当前时代 (CE/AD)。在严格模式下,不假定任何纪元,YEAR_OF_ERA保持不变。如果只有ERA存在,则保持不变。YEAR、MONTH_OF_YEAR和DAY_OF_MONTH- 如果所有三个都存在,则它们组合在一起形成一个LocalDate。在所有三种模式中,YEAR都经过验证。如果模式是 smart 或 strict,那么月份和日期将被验证,日期从 1 到 31 有效。如果模式是 lenient,那么日期的组合方式相当于在 1 月 1 日创建一个日期要求的年份,然后加上月差,然后加上天差。如果模式是智能的,并且每月的日期大于年月的最大值,则将日期调整为每月的最后一天。如果模式是严格的,那么这三个字段必须形成一个有效的日期。YEAR和DAY_OF_YEAR- 如果两者都存在,则它们组合起来形成一个LocalDate。在所有三种模式中,YEAR都经过验证。如果模式宽松,则日期的组合方式相当于在请求年份的 1 月 1 日创建一个日期,然后添加天数差异。如果模式是 smart 或 strict,那么这两个字段必须形成一个有效日期。YEAR、MONTH_OF_YEAR、ALIGNED_WEEK_OF_MONTH和ALIGNED_DAY_OF_WEEK_IN_MONTH- 如果所有四个都存在,则它们组合起来形成一个LocalDate。在所有三种模式中,YEAR都经过验证。如果模式宽松,那么日期的组合方式相当于在所请求年份的 1 月 1 日创建一个日期,然后添加月差,然后添加周差,然后添加天差。如果模式是智能或严格,则所有四个字段都将验证到它们的外部范围。然后以相当于在请求的年和月的第一天创建日期的方式组合日期,然后添加以周和天为单位的数量以达到它们的值。如果模式是严格的,则会额外验证日期以检查日和周调整是否未更改月份。YEAR、MONTH_OF_YEAR、ALIGNED_WEEK_OF_MONTH和DAY_OF_WEEK- 如果所有四个都存在,则它们组合起来形成一个LocalDate。该方法与上面在ALIGNED_DAY_OF_WEEK_IN_MONTH中描述的年、月和周相同。处理完年、月和周后,星期几将调整为下一个或相同的匹配星期几。YEAR、ALIGNED_WEEK_OF_YEAR和ALIGNED_DAY_OF_WEEK_IN_YEAR- 如果所有三个都存在,则它们组合起来形成一个LocalDate。在所有三种模式中,YEAR都经过验证。如果模式宽松,那么日期的组合方式相当于在所请求年份的 1 月 1 日创建一个日期,然后添加以周为单位的差异,然后以天为单位。如果模式是智能或严格,则所有三个字段都将验证到它们的外部范围。然后以相当于在所请求年份的第一天创建一个日期的方式组合日期,然后添加以周和天为单位的数量以达到它们的值。如果模式是严格的,则会额外验证日期以检查日期和星期的调整是否未更改年份。YEAR、ALIGNED_WEEK_OF_YEAR和DAY_OF_WEEK- 如果所有三个都存在,则它们组合起来形成一个LocalDate。该方法与上面在ALIGNED_DAY_OF_WEEK_IN_YEAR中描述的年和周相同。一旦处理了年和周,星期几就会调整为下一个或相同的匹配星期几。
- 指定者:
resolveDate在接口Chronology中- 重写:
resolveDate在类AbstractChronology中- 参数:
fieldValues- 字段到值的映射,可以更新,不为空resolverStyle- 请求的解析类型,不为空- 返回:
- 解决日期,如果信息不足以创建日期则为 null
- 抛出:
DateTimeException- 如果无法解析日期,通常是因为输入数据存在冲突
-
range
从接口Chronology复制的描述获取指定字段的有效值范围。所有字段都可以表示为一个
long整数。此方法返回一个描述该值有效范围的对象。请注意,结果仅描述了最小和最大有效值,重要的是不要过多地解读它们。例如,范围内可能存在对该字段无效的值。
无论年表是否支持该字段,此方法都会返回一个结果。
- 指定者:
range在接口Chronology中- 参数:
field- 获取范围的字段,不为空- 返回:
- 该字段的有效值范围,不为空
-
period
根据年、月和日获取此年表的周期。这将使用指定的年、月和日返回与 ISO 年表相关联的期间。有关详细信息,请参阅
Period。- 指定者:
period在接口Chronology中- 参数:
years- 年数,可能为负数months- 年数,可能为负数days- 年数,可能为负数- 返回:
- ISO 期间,不为空
-
isIsoBased
public boolean isIsoBased()- 指定者:
isIsoBased在接口Chronology中- 返回:
true- 自从:
- 19
- 参见:
-