- 所有已实现的接口:
-
Serializable,Comparable<Chronology>,Chronology
此年表定义了日本帝国历法系统的规则。该历法系统主要在日本使用。日本帝国历法系统与ISO历法系统相同,除了基于纪元的年份编号。
日本从明治6年开始使用公历。仅支持明治及以后的年代;不支持明治6年1月1日之前的日期。
支持的ChronoField实例包括:
DAY_OF_WEEKDAY_OF_MONTHDAY_OF_YEAREPOCH_DAYMONTH_OF_YEARPROLEPTIC_MONTHYEAR_OF_ERAYEARERA
- 实现要求:
- 此类是不可变的且线程安全的。
- 自版本:
- 1.8
- 参见:
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptiondate(int prolepticYear, int month, int dayOfMonth) 从指定的纪年、年份和月份字段获取日本历法系统中的本地日期。从指定的纪元、年份、月份和日期字段获取日本历法系统中的本地日期。date(TemporalAccessor temporal) 从另一个时间对象获取此年表中的本地日期。dateEpochDay(long epochDay) 从纪元日获取日本历法系统中的本地日期。dateNow()从默认时区的系统时钟获取此年表中的当前本地日期。从指定时钟获取此年表中的当前本地日期。从指定时区的系统时钟获取此年表中的当前本地日期。dateYearDay(int prolepticYear, int dayOfYear) 从指定的纪年和年份字段获取日本历法系统中的本地日期。dateYearDay(Era era, int yearOfEra, int dayOfYear) 从指定的纪元、年份和年内日期字段获取日本历法系统中的本地日期。eraOf(int eraValue) 根据给定的数值返回日历系统纪元对象。eras()获取此年表的纪元列表。获取基础日历系统的日历类型 - 'japanese'。getId()获取年表的ID - 'Japanese'。booleanbooleanisLeapYear(long prolepticYear) 检查指定的年份是否为闰年。localDateTime(TemporalAccessor temporal) 从另一个时间对象获取此年表中的本地日期时间。intprolepticYear(Era era, int yearOfEra) 根据纪元和年份获取年表的纪年。range(ChronoField field) 获取指定字段的有效值范围。resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle) 在解析期间将解析的ChronoField值解析为日期。zonedDateTime(Instant instant, ZoneId zone) 从Instant获取此年表中的ChronoZonedDateTime。zonedDateTime(TemporalAccessor temporal) 从另一个时间对象获取此年表中的ChronoZonedDateTime。Methods declared in class java.time.chrono.AbstractChronology
compareTo, equals, hashCode, toStringMethods declared in class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods declared in interface java.time.chrono.Chronology
epochSecond, epochSecond, getDisplayName, period
-
Field Details
-
INSTANCE
日本历法的单例实例。
-
-
Method Details
-
getId
获取年表的ID - 'Japanese'。ID唯一标识
Chronology。可用于使用Chronology.of(String)查找Chronology。- 指定者:
-
getId在接口Chronology中 - 返回:
- 年表ID - 'Japanese'
- 参见:
-
getCalendarType
获取基础日历系统的日历类型 - 'japanese'。日历类型是由Unicode Locale Data Markup Language (LDML)规范定义的标识符。可用于使用
Chronology.of(String)查找Chronology。也可作为区域设置的一部分,通过带有键'ca'的Locale.getUnicodeLocaleType(String)访问。- 指定者:
-
getCalendarType在接口Chronology中 - 返回:
- 日历系统类型 - 'japanese'
- 参见:
-
date
从纪元、年份、月份和日期字段获取日本历法系统中的本地日期。日本的月份和日期与ISO历法系统中的相同。在纪元更改时,它们不会被重置。例如:
6日 昭和64年 = ISO 1989-01-06 7日 昭和64年 = ISO 1989-01-07 8日 平成1年 = ISO 1989-01-08 9日 平成1年 = ISO 1989-01-09
- 指定者:
-
date在接口Chronology中 - 参数:
-
era- 日本纪元,非空 -
yearOfEra- 年份 -
month- 月份 -
dayOfMonth- 日期 - 返回:
- 日本本地日期,非空
- 抛出:
-
DateTimeException- 如果无法创建日期 -
ClassCastException- 如果era不是JapaneseEra
-
date
从纪年、年份和月份字段获取日本历法系统中的本地日期。日本的纪年、月份和日期与ISO历法系统中的相同。在纪元更改时,它们不会被重置。
- 指定者:
-
date在接口Chronology中 - 参数:
-
prolepticYear- proleptic年份 -
month- 月份 -
dayOfMonth- 日期 - 返回:
- 日本本地日期,非空
- 抛出:
-
DateTimeException- 如果无法创建日期
-
dateYearDay
从纪元、年份和年内日期字段获取日本历法系统中的本地日期。此工厂中的年内日期是相对于年代开始的。此定义仅在年代由于纪元更改而重置为一时,才会改变年内日期的正常含义。例如:
6日 昭和64年 = 年内日期 6 7日 昭和64年 = 年内日期 7 8日 平成1年 = 年内日期 1 9日 平成1年 = 年内日期 2
- 指定者:
-
dateYearDay在接口Chronology中 - 参数:
-
era- 日本纪元,非空 -
yearOfEra- 年份 -
dayOfYear- 年内日期 - 返回:
- 日本本地日期,非空
- 抛出:
-
DateTimeException- 如果无法创建日期 -
ClassCastException- 如果era不是JapaneseEra
-
dateYearDay
从proleptic年和年内日期字段获取日本历法系统中的本地日期。此工厂中的年内日期是相对于proleptic年开始的。日本的proleptic年和年内日期与ISO历法系统中的相同。在纪元更改时,它们不会被重置。
- 指定者:
-
dateYearDay在接口Chronology中 - 参数:
-
prolepticYear- proleptic年份 -
dayOfYear- 年内日期 - 返回:
- 日本本地日期,非空
- 抛出:
-
DateTimeException- 如果无法创建日期
-
dateEpochDay
从epoch-day获取日本历法系统中的本地日期。- 指定者:
-
dateEpochDay在接口Chronology中 - 参数:
-
epochDay- epoch日 - 返回:
- 日本本地日期,非空
- 抛出:
-
DateTimeException- 如果无法创建日期
-
dateNow
从接口复制的描述:Chronology从默认时区的系统时钟中获取当前本地日期在此年表中的值。这将查询默认时区中的
系统时钟以获取当前日期。使用此方法将阻止使用替代时钟进行测试,因为时钟是硬编码的。
- 指定者:
-
dateNow在接口Chronology - 返回值:
- 使用系统时钟和默认时区的当前本地日期,不为null
-
dateNow
从接口复制的描述:Chronology从指定时区的系统时钟中获取此年表中的当前本地日期。这将查询指定时区中的
系统时钟以获取当前日期。指定时区可以避免依赖默认时区。使用此方法将阻止使用替代时钟进行测试,因为时钟是硬编码的。
- 指定者:
-
dateNow在接口Chronology - 参数:
-
zone- 要使用的区域ID,不为null - 返回值:
- 使用系统时钟的当前本地日期,不为null
-
dateNow
从接口复制的描述:Chronology从指定时钟中获取此年表中的当前本地日期。这将查询指定的时钟以获取当前日期 - 今天。使用此方法允许使用替代时钟进行测试。可以通过
依赖注入引入替代时钟。- 指定者:
-
dateNow在接口Chronology - 参数:
-
clock- 要使用的时钟,不为null - 返回值:
- 当前本地日期,不为null
-
date
从接口复制的描述:Chronology从另一个时间对象中获取此年表中的本地日期。根据指定的时间对象在此年表中获取日期。
TemporalAccessor表示一组任意的日期和时间信息,此工厂将其转换为ChronoLocalDate的实例。转换通常使用
EPOCH_DAY字段,该字段在日历系统中是标准化的。此方法与函数接口
TemporalQuery的签名匹配,允许通过方法引用aChronology::date来使用查询。- 指定者:
-
date在接口Chronology - 参数:
-
temporal- 要转换的时间对象,不为null - 返回值:
- 此年表中的本地日期,不为null
- 参见:
-
localDateTime
从接口复制的描述:Chronology从另一个时间对象中获取此年表中的本地日期时间。根据指定的时间对象在此年表中获取日期时间。
TemporalAccessor表示一组任意的日期和时间信息,此工厂将其转换为ChronoLocalDateTime的实例。转换提取并组合时间对象中的
ChronoLocalDate和LocalTime。实现允许执行优化,例如访问等效于相关对象的字段。结果使用此年表。此方法与函数接口
TemporalQuery的签名匹配,允许通过方法引用aChronology::localDateTime来使用查询。- 指定者:
-
localDateTime在接口Chronology - 参数:
-
temporal- 要转换的时间对象,不为null - 返回值:
- 此年表中的本地日期时间,不为null
- 参见:
-
zonedDateTime
从接口复制的描述:Chronology从另一个时间对象中获取此年表中的ChronoZonedDateTime。根据指定的时间对象在此年表中获取分区日期时间。
TemporalAccessor表示一组任意的日期和时间信息,此工厂将其转换为ChronoZonedDateTime的实例。转换将首先从时间对象中获取
ZoneId,必要时回退到ZoneOffset。然后尝试获取Instant,必要时回退到ChronoLocalDateTime。结果将是ZoneId或ZoneOffset与Instant或ChronoLocalDateTime的组合。实现允许执行优化,例如访问等效于相关对象的字段。结果使用此年表。此方法与函数接口
TemporalQuery的签名匹配,允许通过方法引用aChronology::zonedDateTime来使用查询。- 指定者:
-
zonedDateTime在接口Chronology - 参数:
-
temporal- 要转换的时间对象,不为null - 返回值:
- 此年表中的分区日期时间,不为null
- 参见:
-
zonedDateTime
从接口复制的描述:Chronology从Instant中获取此年表中的ChronoZonedDateTime。获取具有与指定时间相同的即时分区日期时间。
- 指定者:
-
zonedDateTime在接口Chronology - 参数:
-
instant- 创建日期时间的即时时间,不为null -
zone- 时区,不为null - 返回值:
- 分区日期时间,不为null
-
isLeapYear
public boolean isLeapYear(long prolepticYear) 检查指定年份是否为闰年。日本日历的闰年与ISO闰年完全一致。此方法不验证传入的年份,并且仅对支持范围内的年份具有明确定义的结果。
- 指定者:
-
isLeapYear在接口Chronology - 参数:
-
prolepticYear- 要检查的纪年,未经验证的范围 - 返回值:
- 如果年份是闰年,则为true
-
prolepticYear
从接口复制的描述:Chronology根据纪元和纪元年计算纪年。将纪元和纪元年组合成单个纪年字段。
如果年表积极使用纪元,例如
JapaneseChronology,则将根据纪元验证纪元年。对于其他年表,验证是可选的。- 指定者:
-
prolepticYear在接口Chronology - 参数:
-
era- 适用于年表的正确类型的纪元,不为null -
yearOfEra- 年表纪元年 - 返回值:
- 纪年
-
eraOf
根据给定的数字值返回日历系统纪元对象。此方法支持的数字值与JapaneseEra.of(int)支持的数字值相同。- 指定由:
-
eraOf在接口Chronology - 参数:
-
eraValue- 时代值 - 返回:
-
给定数字时代值的日本
Era - 抛出:
-
DateTimeException- 如果eraValue无效
-
eras
从接口复制的描述:Chronology获取年表的时代列表。大多数日历系统都有一个时代,其中年份具有意义。如果日历系统不支持时代的概念,则必须返回一个空列表。
- 指定由:
-
eras在接口Chronology - 返回:
- 年表的时代列表,可能是不可变的,不为 null
-
range
从接口复制的描述:Chronology获取指定字段的有效值范围。所有字段都可以表示为一个
long整数。此方法返回一个描述该值的有效范围的对象。请注意,结果仅描述最小和最大有效值,重要的是不要读取太多内容。例如,范围内可能存在对该字段无效的值。
无论年表是否支持该字段,此方法都将返回结果。
- 指定由:
-
range在接口Chronology - 参数:
-
field- 要获取范围的字段,不为 null - 返回:
- 字段的有效值范围,不为 null
-
resolveDate
从类复制的描述:AbstractChronology在解析期间将解析的ChronoField值解析为日期。大多数
TemporalField实现都使用字段上的解析方法进行解析。相比之下,ChronoField类定义了仅相对于年表具有意义的字段。因此,在此处解析ChronoField日期字段是在特定年表的上下文中解析的。通过此方法解析
ChronoField实例,可以在子类中重写此方法。EPOCH_DAY- 如果存在,则将其转换为日期,然后所有其他日期字段将与该日期进行交叉检查。PROLEPTIC_MONTH- 如果存在,则将其拆分为YEAR和MONTH_OF_YEAR。如果模式是 strict 或 smart,则将验证该字段。YEAR_OF_ERA和ERA- 如果两者都存在,则将它们组合以形成一个YEAR。在宽松模式下,不会验证YEAR_OF_ERA范围,在 smart 和 strict 模式下会验证。在所有三种模式下,将验证ERA的范围。如果只有YEAR_OF_ERA存在,并且模式是 smart 或 lenient,则假定最后一个可用的时代。在 strict 模式下,不会假定任何时代,而会保持YEAR_OF_ERA不变。如果只有ERA存在,则会保持不变。YEAR、MONTH_OF_YEAR和DAY_OF_MONTH- 如果三者都存在,则将它们组合以形成一个日期。在所有三种模式下,将验证YEAR。如果模式是 smart 或 strict,则将验证月份和日期。如果模式是 lenient,则将以等同于在请求的年份的第一个月的第一天创建日期的方式组合日期,然后添加月份的差异,然后添加日期的差异。如果模式是 smart,并且日期大于年月的最大日期,则将日期调整为最后一天。如果模式是 strict,则三个字段必须形成有效日期。YEAR和DAY_OF_YEAR- 如果两者都存在,则将它们组合以形成一个日期。在所有三种模式下,将验证YEAR。如果模式是 lenient,则将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加日期的差异。如果模式是 smart 或 strict,则两个字段必须形成有效日期。YEAR、MONTH_OF_YEAR、ALIGNED_WEEK_OF_MONTH和ALIGNED_DAY_OF_WEEK_IN_MONTH- 如果四者都存在,则将它们组合以形成一个日期。在所有三种模式下,将验证YEAR。如果模式是 lenient,则将以等同于在请求年份的第一个月的第一天创建日期的方式组合日期,然后添加月份的差异,然后添加周数的差异,然后添加日期的差异。如果模式是 smart 或 strict,则将验证所有四个字段的外部范围。然后,将以等同于在请求年份和月份的第一天创建日期的方式组合日期,然后添加周数和日期以达到它们的值。如果模式是 strict,则还将验证日期,以检查日期和周调整是否更改了月份。YEAR、MONTH_OF_YEAR、ALIGNED_WEEK_OF_MONTH和DAY_OF_WEEK- 如果四者都存在,则将它们组合以形成一个日期。对于年份、月份和周在ALIGNED_DAY_OF_WEEK_IN_MONTH中的处理方式与上述描述相同。一旦处理了年份、月份和周,就会调整星期几为下一个或相同匹配的星期几。YEAR、ALIGNED_WEEK_OF_YEAR和ALIGNED_DAY_OF_WEEK_IN_YEAR- 如果三者都存在,则将它们组合以形成一个日期。在所有三种模式下,将验证YEAR。如果模式是 lenient,则将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加周数的差异,然后添加日期的差异。如果模式是 smart 或 strict,则将验证所有三个字段的外部范围。然后,将以等同于在请求年份的第一天创建日期的方式组合日期,然后添加周数和日期以达到它们的值。如果模式是 strict,则还将验证日期,以检查日期和周调整是否更改了年份。YEAR、ALIGNED_WEEK_OF_YEAR和DAY_OF_WEEK- 如果三者都存在,则将它们组合以形成一个日期。对于年份和周在ALIGNED_DAY_OF_WEEK_IN_YEAR中的处理方式与上述描述相同。一旦处理了年份和周,就会调整星期几为下一个或相同匹配的星期几。
默认实现适用于大多数日历系统。如果找到没有
ChronoField.YEAR_OF_ERA的ChronoField.ERA,则将使用Chronology.eras()中的最后一个时代。该实现假定一周为 7 天,每月的第一天值为 1,每年的第一天值为 1,并且每月和每年的第一天始终存在。- 指定由:
-
resolveDate在接口Chronology - 覆盖:
-
resolveDate在类AbstractChronology - 参数:
-
fieldValues- 字段到值的映射,可以更新,不为 null -
resolverStyle- 请求的解析类型,不为 null - 返回:
- 解析后的日期,如果信息不足以创建日期则为 null
-
isIsoBased
public boolean isIsoBased()- 指定由:
-
isIsoBased在接口Chronology - 返回:
-
true - 自 JDK 版本:
- 19
- 参见:
-