Module java.base
Package java.util.spi

Class CalendarNameProvider

java.lang.Object
java.util.spi.LocaleServiceProvider
java.util.spi.CalendarNameProvider

public abstract class CalendarNameProvider extends LocaleServiceProvider
一个为提供Calendar字段值的本地化字符串表示(显示名称)的服务提供者的抽象类。

日历类型

日历类型用于指定getDisplayNamegetDisplayNames方法提供日历字段值名称的日历系统。有关详细信息,请参见Calendar.getCalendarType()

日历字段

日历字段使用Calendar中定义的常量来指定。以下是每个日历系统应支持的日历通用字段及其值。

字段值
字段 描述
Calendar.MONTH Calendar.JANUARYCalendar.UNDECIMBER 月份编号是基于0的(例如,0 - 一月,...,11 - 十二月)。一些日历系统有13个月。如果支持的区域设置需要,月份名称需要在格式化和独立形式中都得到支持。如果两种形式没有区别,则应在这两种形式中返回相同的名称。
Calendar.DAY_OF_WEEK Calendar.SUNDAYCalendar.SATURDAY 星期几编号是从星期日开始的基于1的(即,1 - 星期日,...,7 - 星期六)。
Calendar.AM_PM Calendar.AMCalendar.PM 0 - 上午,1 - 下午

以下是应支持的特定日历字段及其值。

日历类型和字段值
日历类型 字段 描述
"gregory" Calendar.ERA 0 GregorianCalendar.BC(公元前)
1 GregorianCalendar.AD(公元)
"buddhist" Calendar.ERA 0 公元前(BCE)
1 佛历(Buddhist Era)
"japanese" Calendar.ERA 0 西历(明治维新前)
1 明治
2 大正
3 昭和
4 平成
5 令和
Calendar.YEAR 1 每个纪元的第一年。当指定长样式(Calendar.LONG_FORMATCalendar.LONG_STANDALONE)时应返回。另请参阅SimpleDateFormat中的年份表示
"roc" Calendar.ERA 0 民国前
1 民国
"islamic" Calendar.ERA 0 伊斯兰历前
1 伊斯兰历(AH)

"gregory"的日历字段值名称必须与DateFormatSymbolsProvider提供的日期时间符号一致。

时区名称由TimeZoneNameProvider支持。

自:
1.8
参见:
  • Constructor Details

    • CalendarNameProvider

      protected CalendarNameProvider()
      唯一构造函数。(通常由子类构造函数隐式调用。)
  • Method Details

    • getDisplayName

      public abstract String getDisplayName(String calendarType, int field, int value, int style, Locale locale)
      返回给定stylelocale中日历field value的字符串表示(显示名称)。如果没有适用的字符串表示,则返回null

      field是一个Calendar字段索引,例如Calendar.MONTH。时区字段Calendar.ZONE_OFFSETCalendar.DST_OFFSET不受此方法支持。如果指定任何时区字段,则必须返回null

      valuefield值的数值表示。例如,如果fieldCalendar.DAY_OF_WEEK,有效值为Calendar.SUNDAYCalendar.SATURDAY(包括)。

      style给出字符串表示的样式。它是Calendar.SHORT_FORMATSHORT)、Calendar.SHORT_STANDALONECalendar.LONG_FORMATLONG)、Calendar.LONG_STANDALONECalendar.NARROW_FORMATCalendar.NARROW_STANDALONE之一。

      例如,以下调用将返回"Sunday"

       getDisplayName("gregory", Calendar.DAY_OF_WEEK, Calendar.SUNDAY,
                      Calendar.LONG_STANDALONE, Locale.ENGLISH);
       
      参数:
      calendarType - 日历类型。(忽略由locale给出的任何日历类型。)
      field - Calendar字段索引,例如Calendar.DAY_OF_WEEK
      value - Calendar字段的值,例如Calendar.MONDAY
      style - 字符串表示样式:其中之一为Calendar.SHORT_FORMATSHORT)、Calendar.SHORT_STANDALONECalendar.LONG_FORMATLONG)、Calendar.LONG_STANDALONECalendar.NARROW_FORMATCalendar.NARROW_STANDALONE
      locale - 所需的区域设置
      返回值:
      field value的字符串表示,如果字符串表示不适用或给定的日历类型未知,则返回null
      抛出:
      IllegalArgumentException - 如果fieldstyle无效
      NullPointerException - 如果localenull
      参见:
    • getDisplayNames

      public abstract Map<String,Integer> getDisplayNames(String calendarType, int field, int style, Locale locale)
      返回一个包含给定stylelocale中所有Calendar field的所有字符串表示(显示名称)及其相应字段值的Map

      field是一个Calendar字段索引,例如Calendar.MONTH。该方法不支持时区字段Calendar.ZONE_OFFSETCalendar.DST_OFFSET。如果指定了任何时区字段,则必须返回null

      style给出字符串表示的样式。必须是Calendar.ALL_STYLESCalendar.SHORT_FORMATSHORT)、Calendar.SHORT_STANDALONECalendar.LONG_FORMATLONG)、Calendar.LONG_STANDALONECalendar.NARROW_FORMATCalendar.NARROW_STANDALONE之一。请注意,由于使用单个字符,如"S"代表星期日和星期六,窄名称可能不唯一,因此在这种情况下不包括窄名称。

      例如,以下调用将返回一个包含"January"Calendar.JANUARY"Jan"Calendar.JANUARY等的Map

       getDisplayNames("gregory", Calendar.MONTH, Calendar.ALL_STYLES, Locale.ENGLISH);
       
      参数:
      calendarType - 日历类型。(忽略由locale给出的任何日历类型。)
      field - 返回显示名称的日历字段
      style - 应用于显示名称的样式之一;Calendar.ALL_STYLESCalendar.SHORT_FORMATSHORT)、Calendar.SHORT_STANDALONECalendar.LONG_FORMATLONG)、Calendar.LONG_STANDALONECalendar.NARROW_FORMATCalendar.NARROW_STANDALONE
      locale - 所需的区域设置
      返回值:
      包含fieldstylelocale中的所有显示名称及其field值的Map,如果未为field定义显示名称,则返回null
      抛出:
      NullPointerException - 如果localenull
      参见: