Calendar字段值的本地化字符串表示(显示名称)的服务提供者的抽象类。
日历类型用于指定getDisplayName和getDisplayNames方法提供日历字段值名称的日历系统。有关详细信息,请参见Calendar.getCalendarType()。
日历字段
日历字段使用Calendar中定义的常量来指定。以下是每个日历系统应支持的日历通用字段及其值。
| 字段 | 值 | 描述 |
|---|---|---|
Calendar.MONTH |
Calendar.JANUARY 到 Calendar.UNDECIMBER |
月份编号是基于0的(例如,0 - 一月,...,11 - 十二月)。一些日历系统有13个月。如果支持的区域设置需要,月份名称需要在格式化和独立形式中都得到支持。如果两种形式没有区别,则应在这两种形式中返回相同的名称。 |
Calendar.DAY_OF_WEEK |
Calendar.SUNDAY 到 Calendar.SATURDAY |
星期几编号是从星期日开始的基于1的(即,1 - 星期日,...,7 - 星期六)。 |
Calendar.AM_PM |
Calendar.AM 到 Calendar.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_FORMAT或Calendar.LONG_STANDALONE)时应返回。另请参阅SimpleDateFormat中的年份表示。 |
|
"roc" |
Calendar.ERA |
0 | 民国前 |
| 1 | 民国 | ||
"islamic" |
Calendar.ERA |
0 | 伊斯兰历前 |
| 1 | 伊斯兰历(AH) |
"gregory"的日历字段值名称必须与DateFormatSymbolsProvider提供的日期时间符号一致。
时区名称由TimeZoneNameProvider支持。
- 自:
- 1.8
- 参见:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract StringgetDisplayName(String calendarType, int field, int value, int style, Locale locale) 返回给定style和locale中日历field value的字符串表示(显示名称)。getDisplayNames(String calendarType, int field, int style, Locale locale) 返回包含给定style和locale中所有Calendarfield的所有字符串表示(显示名称)及其对应的字段值的Map。Methods declared in class java.util.spi.LocaleServiceProvider
getAvailableLocales, isSupportedLocale
-
Constructor Details
-
CalendarNameProvider
protected CalendarNameProvider()唯一构造函数。(通常由子类构造函数隐式调用。)
-
-
Method Details
-
getDisplayName
public abstract String getDisplayName(String calendarType, int field, int value, int style, Locale locale) 返回给定style和locale中日历field value的字符串表示(显示名称)。如果没有适用的字符串表示,则返回null。field是一个Calendar字段索引,例如Calendar.MONTH。时区字段Calendar.ZONE_OFFSET和Calendar.DST_OFFSET不受此方法支持。如果指定任何时区字段,则必须返回null。value是field值的数值表示。例如,如果field是Calendar.DAY_OF_WEEK,有效值为Calendar.SUNDAY到Calendar.SATURDAY(包括)。style给出字符串表示的样式。它是Calendar.SHORT_FORMAT(SHORT)、Calendar.SHORT_STANDALONE、Calendar.LONG_FORMAT(LONG)、Calendar.LONG_STANDALONE、Calendar.NARROW_FORMAT或Calendar.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_FORMAT(SHORT)、Calendar.SHORT_STANDALONE、Calendar.LONG_FORMAT(LONG)、Calendar.LONG_STANDALONE、Calendar.NARROW_FORMAT或Calendar.NARROW_STANDALONE -
locale- 所需的区域设置 - 返回值:
-
field value的字符串表示,如果字符串表示不适用或给定的日历类型未知,则返回null - 抛出:
-
IllegalArgumentException- 如果field或style无效 -
NullPointerException- 如果locale为null - 参见:
-
getDisplayNames
public abstract Map<String,Integer> getDisplayNames(String calendarType, int field, int style, Locale locale) 返回一个包含给定style和locale中所有Calendarfield的所有字符串表示(显示名称)及其相应字段值的Map。field是一个Calendar字段索引,例如Calendar.MONTH。该方法不支持时区字段Calendar.ZONE_OFFSET和Calendar.DST_OFFSET。如果指定了任何时区字段,则必须返回null。style给出字符串表示的样式。必须是Calendar.ALL_STYLES、Calendar.SHORT_FORMAT(SHORT)、Calendar.SHORT_STANDALONE、Calendar.LONG_FORMAT(LONG)、Calendar.LONG_STANDALONE、Calendar.NARROW_FORMAT或Calendar.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_STYLES、Calendar.SHORT_FORMAT(SHORT)、Calendar.SHORT_STANDALONE、Calendar.LONG_FORMAT(LONG)、Calendar.LONG_STANDALONE、Calendar.NARROW_FORMAT或Calendar.NARROW_STANDALONE -
locale- 所需的区域设置 - 返回值:
-
包含
field在style和locale中的所有显示名称及其field值的Map,如果未为field定义显示名称,则返回null - 抛出:
-
NullPointerException- 如果locale为null - 参见:
-