Module java.base
Package java.time.chrono

Class JapaneseEra

java.lang.Object
java.time.chrono.JapaneseEra
所有已实现的接口:
Serializable, Era, TemporalAccessor, TemporalAdjuster

public final class JapaneseEra extends Object implements Era, Serializable
日本皇历系统中的一个纪元。

日本政府定义了每个纪元的官方名称和开始日期。各纪元是连续的,它们的日期范围不重叠,因此一纪元的结束日期总是下一纪元的开始日期的前一天。

Java SE平台支持日本政府定义的所有纪元,从明治纪元开始。每个纪元在平台上由一个整数值和一个名称标识。可以使用of(int)valueOf(String)方法获取每个纪元的JapaneseEra的单例实例。values()方法返回所有支持的纪元的单例实例。

为方便起见,此类声明了一些公共静态最终字段,这些字段引用由values()方法返回的单例实例。

API注释:
此类中声明的字段可能随时间发展而变化,与values()方法的结果一致。但是,字段与单例实例之间不一定是一对一的对应关系。日本政府可能宣布一个新的纪元并定义其开始日期,但没有官方名称。在这种情况下,代表新纪元的单例实例可能返回一个在官方名称定义之前不稳定的名称。开发人员在依赖不对应于公共静态最终字段的任何单例实例返回的名称时应谨慎。
实现要求:
此类是不可变的且线程安全的。
自版本:
1.8
参见:
  • Field Details

    • MEIJI

      public static final JapaneseEra MEIJI
      '明治'纪元(1868-01-01 - 1912-07-29)的单例实例,其值为-1。
    • TAISHO

      public static final JapaneseEra TAISHO
      '大正'纪元(1912-07-30 - 1926-12-24)的单例实例,其值为0。
    • SHOWA

      public static final JapaneseEra SHOWA
      '昭和'纪元(1926-12-25 - 1989-01-07)的单例实例,其值为1。
    • HEISEI

      public static final JapaneseEra HEISEI
      '平成'纪元(1989-01-08 - 2019-04-30)的单例实例,其值为2。
    • REIWA

      public static final JapaneseEra REIWA
      '令和'纪元(2019-05-01 - )的单例实例,其值为3。该纪元的结束日期未指定,除非日本政府定义。
      自版本:
      13
  • Method Details

    • of

      public static JapaneseEra of(int japaneseEra)
      int值获取JapaneseEra的实例。
      • 1与'昭和'纪元相关,因为它包含1970-01-01(ISO日历系统)。
      • -10与两个早期纪元相关,分别是明治和大正。
      • 大于1的值与后续纪元相关,从平成(2)开始。

      values()方法返回的每个JapaneseEra实例都有一个int值(可通过Era.getValue()获得),该值可被此方法接受。

      参数:
      japaneseEra - 要表示的纪元
      返回:
      JapaneseEra单例,非空
      抛出:
      DateTimeException - 如果值无效
    • valueOf

      public static JapaneseEra valueOf(String japaneseEra)
      返回具有名称的JapaneseEra

      字符串必须与纪元的名称完全匹配。(不允许有多余的空格字符。)

      有效的纪元名称是从values()返回的纪元名称。

      参数:
      japaneseEra - 日本纪元名称;非空
      返回:
      JapaneseEra单例,永不为空
      抛出:
      IllegalArgumentException - 如果没有指定名称的日本纪元
    • values

      public static JapaneseEra[] values()
      返回一个日本纪元数组。该数组可能包含日本政府定义的超出已知纪元单例的纪元。

      此方法可用于按以下方式迭代日本纪元:

       for (JapaneseEra c : JapaneseEra.values())
           System.out.println(c);
       
      返回:
      一个日本纪元数组
    • getDisplayName

      public String getDisplayName(TextStyle style, Locale locale)
      获取此纪元的文本表示。

      返回用于标识纪元的文本名称,适合向用户展示。参数控制返回文本的样式和区域设置。

      如果找不到文本映射,则返回数字值

      指定者:
      getDisplayName 在接口 Era
      参数:
      style - 所需文本的样式,非空
      locale - 要使用的区域设置,非空
      返回:
      纪元的文本值,非空
    • getValue

      public int getValue()
      获取数字纪元int值。

      包含1970-01-01(ISO日历系统)的SHOWA纪元的值为1。后续纪元从2(HEISEI)开始编号。早期纪元分别编号为0(TAISHO)、-1(MEIJI)。

      指定者:
      getValue 在接口 Era
      返回:
      纪元值
    • range

      public ValueRange range(TemporalField field)
      获取指定字段的有效值范围。

      范围对象表示字段的最小和最大有效值。此纪元用于增强返回范围的准确性。如果无法返回范围,因为不支持该字段或出于其他原因,将抛出异常。

      如果字段是一个ChronoField,则在此处实现查询。ERA字段返回范围。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException异常。

      如果字段不是ChronoField,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)并将this作为参数来获取此方法的结果。字段决定是否可以获取范围。

      由于日本日历系统的性质,有效的日本纪元范围可能随时间而变化。

      指定者:
      range 在接口 Era
      指定者:
      range 在接口 TemporalAccessor
      参数:
      field - 要查询范围的字段,非空
      返回:
      字段的有效值范围,非空
      抛出:
      DateTimeException - 如果无法获取字段的范围
      UnsupportedTemporalTypeException - 如果不支持该单位