- 所有已实现的接口:
-
Serializable
,Comparable<Chronology>
,Chronology
此年表定义了ISO日历系统的规则。该日历系统基于ISO-8601标准,这是事实上的世界日历。
字段定义如下:
- era - 有两个时代,'当前时代' (CE) 和 '当前时代之前' (BCE)。
- year-of-era - 年代与当前CE时代的追代年份相同。对于ISO纪元之前的BCE时代,随着时间倒退,年份从1开始递增。
- proleptic-year - 追代年份与当前时代的年代相同。对于之前的时代,年份为零,然后为负值。
- 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编号。
- leap-year - 闰年每4年一次,除非年份可被100整除且不可被400整除。
- 实现要求:
- 此类是不可变的且线程安全的。
- 自 JDK 版本:
- 1.8
- 参见:
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptiondate
(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) 从追代年份和年份中的年份字段获取ISO本地日期。dateYearDay
(Era era, int yearOfEra, int dayOfYear) 从时代、年代中的年份和年份中的年份字段获取ISO本地日期。long
epochSecond
(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'。boolean
boolean
isLeapYear
(long prolepticYear) 根据ISO追代日历系统规则检查年份是否为闰年。localDateTime
(TemporalAccessor temporal) 从另一个日期时间对象获取ISO本地日期时间。period
(int years, int months, int days) 基于年、月和日获取此年表的期间。int
prolepticYear
(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分区日期时间。Methods declared in class java.time.chrono.AbstractChronology
compareTo, equals, hashCode, toString
Methods declared in class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods declared in interface java.time.chrono.Chronology
epochSecond, getDisplayName
-
Field Details
-
INSTANCE
ISO年表的单例实例。
-
-
Method Details
-
getId
获取年表的ID - 'ISO'。Chronology
。可用于使用Chronology.of(String)
查找Chronology
。- 指定者:
-
getId
在接口Chronology
中 - 返回:
- 年表ID - 'ISO'
- 参见:
-
getCalendarType
获取基础日历系统的日历类型 - 'iso8601'。日历类型是由Unicode语言环境数据标记语言(LDML)规范定义的标识符。可用于使用
Chronology.of(String)
查找Chronology
。也可作为区域设置的一部分,通过键'ca'访问,可通过Locale.getUnicodeLocaleType(String)
访问。- 指定者:
-
getCalendarType
在接口Chronology
中 - 返回:
- 日历系统类型 - 'iso8601'
- 参见:
-
date
从时代、年代中的年份、月份中的月份和月份中的日期字段获取ISO本地日期。- 指定者:
-
date
在接口Chronology
中 - 参数:
-
era
- ISO时代,非空 -
yearOfEra
- ISO年代中的年份 -
month
- ISO年份中的月份 -
dayOfMonth
- ISO月份中的日期 - 返回:
- ISO本地日期,非空
- 抛出:
-
DateTimeException
- 如果无法创建日期 -
ClassCastException
- 如果era
的类型不是IsoEra
-
date
从追代年份、年份中的月份和月份中的日期字段获取ISO本地日期。- 指定者:
-
date
在接口Chronology
中 - 参数:
-
prolepticYear
- ISO追代年份 -
month
- ISO年份中的月份 -
dayOfMonth
- ISO月份中的日期 - 返回:
- ISO本地日期,非空
- 抛出:
-
DateTimeException
- 如果无法创建日期
-
dateYearDay
从时代、年代中的年份和年份中的年份字段获取ISO本地日期。- 指定者:
-
dateYearDay
在接口Chronology
中 - 参数:
-
era
- ISO时代,非空 -
yearOfEra
- ISO年代中的年份 -
dayOfYear
- ISO年份中的年份 - 返回:
- ISO本地日期,非空
- 抛出:
-
DateTimeException
- 如果无法创建日期
-
dateYearDay
从追代年份和年份中的年份字段获取ISO本地日期。- 指定者:
-
dateYearDay
在接口Chronology
中 - 参数:
-
prolepticYear
- ISO追代年份 -
dayOfYear
- ISO年份中的年份 - 返回:
- ISO本地日期,非空
- 抛出:
-
DateTimeException
- 如果无法创建日期
-
dateEpochDay
从纪元日获取ISO本地日期。- 指定者:
-
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_YEAR -
month
- 年份中的月份,从1到12 -
dayOfMonth
- 月份中的日期,从1到31 -
hour
- 一天中的小时,从0到23 -
minute
- 小时中的分钟,从0到59 -
second
- 分钟中的秒,从0到59 -
zoneOffset
- 区偏移,不能为空 - 返回:
- 相对于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本地日期。这将查询默认时区中的
系统时钟
以获取当前日期。使用此方法将阻止使用替代时钟进行测试的能力,因为时钟是硬编码的。
- 指定者:
-
dateNow
在接口Chronology
中 - 返回:
- 使用系统时钟和默认时区获取的当前ISO本地日期,不能为空
- 抛出:
-
DateTimeException
- 如果无法创建日期
-
dateNow
从指定时区的系统时钟获取当前ISO本地日期。这将查询
系统时钟
以获取当前日期。指定时区避免依赖默认时区。使用此方法将阻止使用替代时钟进行测试的能力,因为时钟是硬编码的。
- 指定者:
-
dateNow
在接口Chronology
中 - 参数:
-
zone
- 要使用的区域ID,不能为空 - 返回:
- 使用系统时钟获取的当前ISO本地日期,不能为空
- 抛出:
-
DateTimeException
- 如果无法创建日期
-
dateNow
从指定时钟获取当前ISO本地日期。这将查询指定时钟以获取当前日期 - 今天。使用此方法允许使用替代时钟进行测试。可以使用
依赖注入
引入替代时钟。- 指定者:
-
dateNow
在接口Chronology
中 - 参数:
-
clock
- 要使用的时钟,不能为空 - 返回:
- 当前ISO本地日期,不能为空
- 抛出:
-
DateTimeException
- 如果无法创建日期
-
isLeapYear
public boolean isLeapYear(long prolepticYear) 根据ISO proleptic日历系统规则检查年份是否为闰年。此方法应用整个时间线上当前的闰年规则。一般来说,如果年份可以被4整除,则是闰年。然而,能被100整除的年份不是闰年,但能被400整除的年份是。
例如,1904年是闰年,因为可以被4整除。1900年不是闰年,因为可以被100整除,但2000年是闰年,因为可以被400整除。
计算是proleptic的 - 将相同的规则应用到遥远的未来和过去。这在历史上是不准确的,但对于ISO-8601标准是正确的。
- 指定者:
-
isLeapYear
在接口Chronology
中 - 参数:
-
prolepticYear
- 要检查的ISO proleptic年份 - 返回:
- 如果年份是闰年,则为true,否则为false
-
prolepticYear
从接口复制的描述:Chronology
给定时代和年份,计算proleptic年份。这将时代和年份合并为单个proleptic年份字段。
如果年表积极使用时代,例如
JapaneseChronology
,则年份将根据时代验证年份。对于其他年表,验证是可选的。- 指定者:
-
prolepticYear
在接口Chronology
中 - 参数:
-
era
- 与年表类型相符的时代,不能为空 -
yearOfEra
- 年表的年份 - 返回:
- proleptic年份
-
eraOf
从接口复制的描述:Chronology
根据数字值创建年表时代对象。时代在概念上是时间线的最大划分。大多数日历系统有一个将时间线分为两个时代的单一纪元。然而,有些有多个时代,例如每位领导人的统治一个时代。确切的含义由年表根据以下约束确定。
1970-01-01时使用的时代必须具有值1。后续时代必须具有依次更高的值。较早的时代必须具有依次更低的值。每个年表必须引用一个枚举或类似的单例来提供时代值。
此方法返回指定时代值的正确类型的单例时代。
- 指定者:
-
eraOf
在接口Chronology
中 - 参数:
-
eraValue
- 时代值 - 返回值:
- 日历系统的时代,不为null
-
eras
从接口复制的描述:Chronology
获取年表的时代列表。大多数日历系统都有一个时代,其中年份具有意义。如果日历系统不支持时代的概念,则必须返回一个空列表。
- 指定者:
-
eras
在接口Chronology
中 - 返回值:
- 年表的时代列表,可能是不可变的,不为null
-
resolveDate
将解析的ChronoField
值解析为日期。大多数
TemporalField
实现都是使用字段上的resolve方法解析的。相比之下,ChronoField
类定义了只相对于年表具有意义的字段。因此,在特定年表的上下文中,在这里解析ChronoField
日期字段。ISO日历系统上的
ChronoField
实例解析如下。EPOCH_DAY
- 如果存在,则将其转换为LocalDate
,然后将所有其他日期字段与该日期进行交叉检查。PROLEPTIC_MONTH
- 如果存在,则将其拆分为YEAR
和MONTH_OF_YEAR
。如果模式是strict或smart,则对字段进行验证。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,则将日期组合成等同于在请求的年份的一月一日创建日期,然后添加月份差异,然后添加日期差异的方式。如果模式是smart,并且日期大于年月的最大日期,则将日期调整为该月的最后一天。如果模式是strict,则这三个字段必须形成有效日期。YEAR
和DAY_OF_YEAR
- 如果两者都存在,则将它们组合成一个LocalDate
。在所有三种模式中,将验证YEAR
。如果模式是lenient,则将日期组合成等同于在请求的年份的一月一日创建日期,然后添加日期差异。如果模式是smart或strict,则这两个字段必须形成有效日期。YEAR
、MONTH_OF_YEAR
、ALIGNED_WEEK_OF_MONTH
和ALIGNED_DAY_OF_WEEK_IN_MONTH
- 如果四者都存在,则将它们组合成一个LocalDate
。在所有三种模式中,将验证YEAR
。如果模式是lenient,则将日期组合成等同于在请求的年份的一月一日创建日期,然后添加月份差异,然后添加周差异,然后添加日期差异。如果模式是smart或strict,则所有四个字段将验证其外部范围。然后以等同于在请求的年份和月份的第一天创建日期的方式组合日期,然后添加周和日期的数量以达到它们的值。如果模式是strict,则还将验证日期,以检查日期和周调整是否更改了月份。YEAR
、MONTH_OF_YEAR
、ALIGNED_WEEK_OF_MONTH
和DAY_OF_WEEK
- 如果四者都存在,则将它们组合成一个LocalDate
。对于年份、月份和周中的年份,月份和周的处理方式与上述相同。一旦处理了年份、月份和周,就会调整星期几为下一个或相同的匹配星期几。YEAR
、ALIGNED_WEEK_OF_YEAR
和ALIGNED_DAY_OF_WEEK_IN_YEAR
- 如果三者都存在,则将它们组合成一个LocalDate
。在所有三种模式中,将验证YEAR
。如果模式是lenient,则将日期组合成等同于在请求的年份的一月一日创建日期,然后添加周差异,然后添加日期差异。如果模式是smart或strict,则所有三个字段将验证其外部范围。然后以等同于在请求的年份的第一天创建日期的方式组合日期,然后添加周和日期的数量以达到它们的值。如果模式是strict,则还将验证日期,以检查日期和周调整是否更改了年份。YEAR
、ALIGNED_WEEK_OF_YEAR
和DAY_OF_WEEK
- 如果三者都存在,则将它们组合成一个LocalDate
。对于年份和周中的年份和周的处理方式与上述相同。一旦处理了年份和周,就会调整星期几为下一个或相同的匹配星期几。
- 指定者:
-
resolveDate
在接口Chronology
中 - 覆盖:
-
resolveDate
在类AbstractChronology
中 - 参数:
-
fieldValues
- 字段到值的映射,可以更新,不为null -
resolverStyle
- 请求的解析类型,不为null - 返回值:
- 解析后的日期,如果没有足够的信息创建日期则为null
- 抛出:
-
DateTimeException
- 如果无法解析日期,通常是因为输入数据冲突
-
range
从接口复制的描述:Chronology
获取指定字段的有效值范围。所有字段都可以表示为
long
整数。此方法返回一个描述该值的有效范围的对象。请注意,结果仅描述最小和最大有效值,重要的是不要读取太多内容。例如,范围内可能存在对于字段无效的值。
无论年表是否支持该字段,此方法都将返回结果。
- 指定者:
-
range
在接口Chronology
中 - 参数:
-
field
- 要获取范围的字段,不为null - 返回值:
- 该字段的有效值范围,不为null
-
period
基于年、月和日获取此年表的周期。使用指定的年、月和日返回与ISO年表相关联的周期。有关详细信息,请参阅
Period
。- 指定者:
-
period
在接口Chronology
中 - 参数:
-
years
- 年数,可以为负数 -
months
- 月数,可以为负数 -
days
- 天数,可以为负数 - 返回值:
- ISO周期,不为null
-
isIsoBased
public boolean isIsoBased()- 指定者:
-
isIsoBased
在接口Chronology
中 - 返回值:
-
true
- 自:
- 19
- 参见:
-