- java.lang.Object
-
- java.time.chrono.AbstractChronology
-
- java.time.chrono.IsoChronology
-
- 实现的所有接口
-
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
-
-
字段汇总
字段 变量和类型 字段 描述 static IsoChronology
INSTANCE
ISO年表的单例实例。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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的纪元的秒数。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)
根据年,月和日获得此年表的时间段。LocalDate
resolveDate(Map<TemporalField,Long> fieldValues, ResolverStyle resolverStyle)
解析在解析期间将ChronoField
值解析为日期。ZonedDateTime
zonedDateTime(Instant instant, ZoneId zone)
从Instant
获得此年表中的ISO分区日期时间。ZonedDateTime
zonedDateTime(TemporalAccessor temporal)
从另一个日期时间对象获取ISO分区日期时间。-
声明方法的类 java.time.chrono.AbstractChronology
compareTo, equals, hashCode, toString
-
声明方法的接口 java.time.chrono.Chronology
epochSecond, eraOf, eras, getDisplayName, prolepticYear, range
-
-
-
-
字段详细信息
-
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
in interfaceChronology
- 参数
-
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时代,不是null -
yearOfEra
- ISO年代 -
dayOfYear
- ISO日期 - 结果
- ISO本地日期,不为空
- 异常
-
DateTimeException
- 如果无法创建日期
-
dateYearDay
public LocalDate dateYearDay(int prolepticYear, int dayOfYear)
从预测年和日期字段获得ISO本地日期。- Specified by:
-
dateYearDay
in interfaceChronology
- 参数
-
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
- 要转换的日期时间对象,而不是null - 结果
- 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
- 如果任何参数的值超出范围,或者月中的某一天无效 - 从以下版本开始:
- 9
-
localDateTime
public LocalDateTime localDateTime(TemporalAccessor temporal)
从另一个日期时间对象获取ISO本地日期时间。- Specified by:
-
localDateTime
在界面Chronology
- 参数
-
temporal
- 要转换的日期时间对象,而不是null - 结果
- ISO本地日期时间,不为空
- 异常
-
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本地日期,不为空
- 异常
-
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
- 如果存在,则将其拆分为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
数年ALIGNED_DAY_OF_WEEK_IN_YEAR
周ALIGNED_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
- 年数,可能是负数 - 结果
- 这个年表的时期,不是空的
-
-