- java.lang.Object
-
- java.time.chrono.AbstractChronology
-
- java.time.chrono.IsoChronology
-
- All Implemented Interfaces:
-
Serializable
,Comparable<Chronology>
,Chronology
public final class IsoChronology extends AbstractChronology implements 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
-
-
Field Summary
Fields Modifier and Type Field 描述 static IsoChronology
INSTANCE
ISO年代的单例实例。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 LocalDate
date(int prolepticYear, int month, int dayOfMonth)
从月度,月份和月份月份获取ISO本地日期。LocalDate
date(Era era, int yearOfEra, int month, int dayOfMonth)
从时代,年龄,月份和月份的时代获得ISO本地日期。LocalDate
date(TemporalAccessor temporal)
从另一个日期时间对象获取ISO本地日期。LocalDate
dateEpochDay(long epochDay)
从时代获取ISO本地日期。LocalDate
dateNow()
从默认时区的系统时钟获取当前的ISO本地日期。LocalDate
dateNow(Clock clock)
从指定的时钟获取当前的ISO本地日期。LocalDate
dateNow(ZoneId zone)
从指定时区的系统时钟获取当前的ISO本地日期。LocalDate
dateYearDay(int prolepticYear, int dayOfYear)
从幼稚年份和日期字段获取ISO本地日期。LocalDate
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的时期获取秒数。IsoEra
eraOf(int eraValue)
根据数值创建年代时代对象。List<Era>
eras()
获取年表的时间列表。String
getCalendarType()
获取底层日历系统的日历类型 - 'iso8601'。String
getId()
获取年表的ID - “ISO”。boolean
isLeapYear(long prolepticYear)
根据ISO培训日历系统规则,检查年份是否是闰年。LocalDateTime
localDateTime(TemporalAccessor temporal)
从另一个日期时间对象获取ISO本地日期时间。Period
period(int years, int months, int days)
根据几年,几个月和几天的时间表获得一段时间。int
prolepticYear(Era era, int yearOfEra)
计算年龄和年龄的幼年时期。ValueRange
range(ChronoField field)
获取指定字段的有效值的范围。LocalDate
resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
解析解析ChronoField
值到一个日期。ZonedDateTime
zonedDateTime(Instant instant, ZoneId zone)
从这个年龄从Instant
获得ISOInstant
日期时间。ZonedDateTime
zonedDateTime(TemporalAccessor temporal)
从另一个日期时间对象获取ISO分区的日期时间。-
Methods inherited from class java.time.chrono.AbstractChronology
compareTo, equals, hashCode, toString
-
Methods inherited from interface java.time.chrono.Chronology
epochSecond, from, getDisplayName
-
-
-
-
字段详细信息
-
INSTANCE
public static final IsoChronology INSTANCE
ISO年代的单例实例。
-
-
方法详细信息
-
getId
public String getId()
获取年表的ID - “ISO”。ID唯一标识了
Chronology
。 它可以用于查找Chronology
使用Chronology.of(String)
。- Specified by:
-
getId
在接口Chronology
- 结果
- 年表ID - 'ISO'
- 另请参见:
-
getCalendarType()
-
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本地日期。- Specified by:
-
date
在接口Chronology
- 参数
-
prolepticYear
- ISOprolepticYear
年 -
month
- ISO月份 -
dayOfMonth
- ISO的日期 - 结果
- ISO本地日期,不为空
- 异常
-
DateTimeException
- 如果无法创建日期
-
dateYearDay
public LocalDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
从时代,年龄和日期的领域获得ISO本地日期。- Specified by:
-
dateYearDay
在接口Chronology
- 参数
-
era
- ISO时代,不为空 -
yearOfEra
- ISO年代 -
dayOfYear
- ISO的日期 - 结果
- ISO本地日期,不为空
- 异常
-
DateTimeException
- 如果无法创建日期
-
dateYearDay
public LocalDate dateYearDay(int prolepticYear, int dayOfYear)
从幼稚年份和日期字段获取ISO本地日期。- Specified by:
-
dateYearDay
在接口Chronology
- 参数
-
prolepticYear
- ISOprolepticYear
年 -
dayOfYear
- ISO的一年 - 结果
- ISO本地日期,不为空
- 异常
-
DateTimeException
- 如果无法创建日期
-
dateEpochDay
public LocalDate dateEpochDay(long epochDay)
从时代获取ISO本地日期。- Specified by:
-
dateEpochDay
在接口Chronology
- 参数
-
epochDay
- 纪元日 - 结果
- ISO本地日期,不为空
- 异常
-
DateTimeException
- 如果无法创建日期
-
date
public LocalDate date(TemporalAccessor temporal)
从另一个日期时间对象获取ISO本地日期。- Specified by:
-
date
在接口Chronology
- 参数
-
temporal
- 要转换的日期时间对象,不为空 - 结果
- ISO本地日期,不为空
- 异常
-
DateTimeException
- 如果无法创建日期 - 另请参见:
-
ChronoLocalDate.from(TemporalAccessor)
-
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
- 如果任何参数的值超出范围,或者如果月的日期对DateTimeException
无效 - 从以下版本开始:
- 9
-
localDateTime
public LocalDateTime localDateTime(TemporalAccessor temporal)
从另一个日期时间对象获取ISO本地日期时间。- Specified by:
-
localDateTime
在接口Chronology
- 参数
-
temporal
- 要转换的日期时间对象,不为null - 结果
- ISO本地日期时间,不为null
- 异常
-
DateTimeException
- 如果无法创建日期时间 - 另请参见:
-
ChronoLocalDateTime.from(TemporalAccessor)
-
zonedDateTime
public ZonedDateTime zonedDateTime(TemporalAccessor temporal)
从另一个日期时间对象获取ISO分区的日期时间。- Specified by:
-
zonedDateTime
在接口Chronology
- 参数
-
temporal
- 要转换的日期时间对象,不为null - 结果
- ISO分区日期时间,不为空
- 异常
-
DateTimeException
- 如果无法创建日期时间 - 另请参见:
-
ChronoZonedDateTime.from(TemporalAccessor)
-
zonedDateTime
public ZonedDateTime zonedDateTime(Instant instant, ZoneId zone)
从一个Instant
获得这个年代的ISO分区日期。- Specified by:
-
zonedDateTime
在接口Chronology
- 参数
-
instant
- 即时创建日期时间,不为null -
zone
- 时区,不为空 - 结果
- 划分的日期时间,不为空
- 异常
-
DateTimeException
- 如果结果超出了支持的范围
-
dateNow
public LocalDate dateNow()
- Specified by:
-
dateNow
在接口Chronology
- 结果
- 当前ISO本地日期使用系统时钟和默认时区,不为空
- 异常
-
DateTimeException
- 如果无法创建日期
-
dateNow
public LocalDate dateNow(ZoneId zone)
- Specified by:
-
dateNow
接口Chronology
- 参数
-
zone
- 要使用的区域ID,不为空 - 结果
- 当前ISO本地日期使用系统时钟,不为空
- 异常
-
DateTimeException
- 如果无法创建日期
-
dateNow
public LocalDate dateNow(Clock clock)
从指定的时钟获取当前的ISO本地日期。这将查询指定的时钟以获取当前日期 - 今天。 使用此方法可以使用备用时钟进行测试。 可以使用
dependency injection
引入备用时钟。- Specified by:
-
dateNow
在接口Chronology
- 参数
-
clock
- 要使用的时钟,不为空 - 结果
- 当前的ISO本地日期,不为null
- 异常
-
DateTimeException
- 如果无法创建日期
-
isLeapYear
public boolean isLeapYear(long prolepticYear)
根据ISO培训日历系统规则,检查年份是否是闰年。这种方法在整个时间线上应用目前的闰年规则。 一般来说,一年是一个闰年,如果没有余数可以被四分割。 但是,除了100岁之外,年份可以被分割为100岁,除了年龄可以被400除外。
例如,1904年是一个闰年,可以被4整除。1900年不是一个闰年,因为它可以被100整除,然而2000年是一个闰年,因为它可以被400除数。
计算是应激的 - 将相同的规则应用到远未来很远的地方。 这在历史上是不准确的,但对于ISO-8601标准是正确的。
- Specified by:
-
isLeapYear
在接口Chronology
- 参数
-
prolepticYear
- ISO检测年份 - 结果
- 如果一年是飞跃,否则为假
-
prolepticYear
public int prolepticYear(Era era, int yearOfEra)
说明从界面Chronology
复制计算年龄和年龄的幼年时期。这将时代与时代融为一体的年轻一代。
如果年表积极使用时代,如
JapaneseChronology
那么年代将在时代得到验证。 对于其他年表,验证是可选的。- Specified by:
-
prolepticYear
在接口Chronology
- 参数
-
era
- 时代的正确类型为年表,不为空 -
yearOfEra
- 年代的年代 - 结果
- 幼稚的一年
-
eraOf
public IsoEra eraOf(int eraValue)
描述从接口Chronology
复制根据数值创建年代时代对象。时代在概念上是时间线上最大的一个部门。 大多数日历系统具有将时间线划分为两个时代的单个时期。 然而,有些有多个时代,比如每个领导人统治的时代。 确切的含义由年龄根据以下约束决定。
1970-01-01使用的时代必须具有值1.后来的时代必须具有较高的值。 较早的时间必须具有较低的值。 每个年表必须参考枚举或类似的单身,以提供时代价值观。
该方法返回指定时代值的正确类型的单例时代。
- Specified by:
-
eraOf
在接口Chronology
- 参数
-
eraValue
- 时代价值 - 结果
- 日历系统时代,不为空
-
eras
public List<Era> eras()
说明从界面Chronology
复制获取年表的时间列表。大多数日历系统都有一个时代,其中一年有意义。 如果日历系统不支持时间的概念,则必须返回空列表。
- Specified by:
-
eras
在接口Chronology
- 结果
- 时间表的时代列表可能是不可变的,不为零
-
resolveDate
public LocalDate resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
解析解析中的日期为ChronoField
。大多数
TemporalField
实现使用该字段上的resolve方法来解决。 相比之下,ChronoField
类定义的字段只能具有相对于年表的意义。 因此,ChronoField
日期字段在具体年表的上下文中解决。ISO日历系统上的
ChronoField
实例解决如下。-
EPOCH_DAY
- 如果存在,EPOCH_DAY
其转换为LocalDate
,然后根据日期对所有其他日期字段进行交叉检查。 -
PROLEPTIC_MONTH
- 如果存在,那么它被分割成YEAR
和MONTH_OF_YEAR
。 如果模式是严格的或智能的,则该字段被验证。 -
YEAR_OF_ERA
和ERA
- 如果两者都存在,则它们被组合以形成YEAR
。 在宽松的模式下,YEAR_OF_ERA
范围是无法验证的,在智能和严格的模式下。 在所有三种模式下,ERA
的范围都被验证。 如果只有YEAR_OF_ERA
存在,并且模式是聪明或宽松的,则假设当前时代(CE / AD)。 在严格的模式下,没有任何时代被假定,而YEAR_OF_ERA
没有被触动。 如果只有ERA
存在,那么它是保持不变的。 -
YEAR
,MONTH_OF_YEAR
和DAY_OF_MONTH
-如果所有三个都存在,则它们被组合以形成LocalDate
。 在所有三种模式下,YEAR
都经过验证。 如果模式是聪明的或严格的,则验证月份和日期,日期从1到31.如果模式宽松,那么日期以相当于在1月1日创建日期的方式组合要求的年份,然后加上差异在几个月,然后差异在天。 如果模式是聪明的,并且月的日期大于年月的最大值,则月的日期被调整到最后一个月。 如果模式严格,则三个字段必须形成有效的日期。 -
YEAR
和DAY_OF_YEAR
- 如果两者都存在,则它们被组合以形成LocalDate
。 在所有三种模式下,YEAR
都经过验证。 如果模式宽松,那么日期将以等于在请求年份的1月1日创建日期的方式组合,然后加上差异。 如果模式是聪明或严格的,那么这两个字段必须形成一个有效的日期。 -
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
周在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
中的上述相同。 一天一周的时间一周调整为下一个或相同的匹配日期,一年的时间和周数被处理。
- Specified by:
-
resolveDate
在接口Chronology
- 重写:
-
resolveDate
在AbstractChronology
- 参数
-
fieldValues
- 可以更新的值的字段映射,不为空 -
resolverStyle
- 所请求的解析类型,不为null - 结果
- 解决日期,如果信息不足创建日期,则为null
- 异常
-
DateTimeException
- 如果日期无法解决,通常是因为输入数据中存在冲突
-
-
range
public ValueRange range(ChronoField field)
描述从接口Chronology
复制获取指定字段的有效值的范围。所有字段可以表示为
long
整数。 此方法返回描述该值的有效范围的对象。请注意,结果仅描述最小和最大有效值,重要的是不要太多读取它们。 例如,可以在该范围内的值对该字段无效。
无论年表是否支持该字段,此方法将返回结果。
- Specified by:
-
range
在接口Chronology
- 参数
-
field
- 获取范围的字段,不为null - 结果
- 字段的有效值的范围不为null
-
period
public Period period(int years, int months, int days)
根据几年,几个月和几天的时间表获得一段时间。这将使用指定的年份,月份和日期返回与ISO年表相关的期间。 详见
Period
。- Specified by:
-
period
在接口Chronology
- 参数
-
years
- 年数可能为负数 -
months
- 年数,可能为负数 -
days
- 年数,可能为负数 - 结果
- 这个时间期限在这个年代,不为零
-
-