Most visited

Recently visited

Added in API level 24

TimeZoneNames

public abstract class TimeZoneNames
extends Object implements Serializable

java.lang.Object
   ↳ android.icu.text.TimeZoneNames


TimeZoneNames是一个抽象类,代表UTS#35 Unicode Locale Data Markup Language (LDML)定义的时区显示名称数据模型。 该模型定义了用于存储一组显示名称的元区域。 元区可以由多个时区共享。 另外,时区可能具有多个元区历史映射。

例如,美国人将北美东部使用的地区称为“东部时间”。 tz数据库包含多个时区“America / New_York”,“America / Detroit”,“America / Montreal”以及属于“Eastern Time”的其他一些时区。 但是,为这些时区分配不同的显示名称对于大多数人来说没有多大意义。

CLDR (使用LDML表示语言环境数据)中,显示名称“Eastern Time”被存储为由ID“America_Eastern”标识的元区域的长通用显示名称。 然后,还有另一张表格,用于维护每个时区的元历史区域的历史映射。 上例(“America / New_York”,“America / Detroit”)中的时区映射到元区“America_Eastern”。

有时,过去将时区映射到不同的时区。 例如,“美国/印第安纳/诺克斯”一直在“东部时间”和“中部时间”之间来回移动。 因此,元区映射数据的时区有必要按日期范围存储。

注意:

TimeZoneFormat假设的实例TimeZoneNames是不可改变的。 如果您想提供自己的TimeZoneNames实施并将其与TimeZoneFormat一起使用,则必须遵守合同。

此类中的方法假定时区标识已被规范化。 例如,您可能无法获得带有时区ID“America / Indiana / Indianapolis”的方法返回的正确结果,因为它不是经典时区ID(该时区的标准时区ID是“America / Indianapolis”)。有关ICU规范时区ID,请参阅getCanonicalID(String)

在CLDR中,大多数时区显示名称(位置名称除外)均通过元区域提供。 但时区可能有一个不与其他时区共享的特定名称。 例如,“欧洲/伦敦”时区的标准时间为“格林威治标准时间”,英文长名也与其他时区共享。 然而,夏令时的长名称是“英国夏令时”,仅用于“欧洲/伦敦”。

getTimeZoneDisplayName(String, NameType)设计用于访问仅由单个时区使用的名称。 但是,并不一定意味着子类实现与CLDR使用相同的模型。 子类实现可能仅通过getTimeZoneDisplayName(String, NameType)或仅通过getMetaZoneDisplayName(String, NameType)或两者提供时区名称。

默认TimeZoneNames由归国实现getInstance(ULocale)使用从CLDR导入的语言环境数据。 在CLDR中,所有区域设置共享一组元区ID和区域ID与元区ID之间的映射。 因此,行为getAvailableMetaZoneIDs()getAvailableMetaZoneIDs(String)getMetaZoneID(String, long) ,并getReferenceZoneID(String, String)不会不管使用何种语言环境获得的实例改变TimeZoneNames

Summary

Nested classes

枚举 TimeZoneNames.NameType

时区显示名称类型

Public methods

abstract Set<String> getAvailableMetaZoneIDs()

返回所有可用元区域ID的不可变集合。

abstract Set<String> getAvailableMetaZoneIDs(String tzID)

返回给定时区使用的所有可用元区ID的不可变集合。

final String getDisplayName(String tzID, TimeZoneNames.NameType type, long date)

返回给定日期的时区显示名称。

String getExemplarLocationName(String tzID)

返回给定时区的示例位置名称。

static TimeZoneNames getInstance(ULocale locale)

返回指定语言环境的实例 TimeZoneNames

static TimeZoneNames getInstance(Locale locale)

为指定的 Locale返回 TimeZoneNames的实例。

abstract String getMetaZoneDisplayName(String mzID, TimeZoneNames.NameType type)

返回元区域的显示名称。

abstract String getMetaZoneID(String tzID, long date)

返回给定日期的给定规范时区ID的元区域ID。

abstract String getReferenceZoneID(String mzID, String region)

返回区域的给定元区域ID的参考区域ID。

static TimeZoneNames getTZDBInstance(ULocale locale)

返回仅包含与IANA tz数据库的区域缩写(未本地化)兼容的简短特定区域名称( SHORT_STANDARDSHORT_DAYLIGHT )的实例 TimeZoneNames

abstract String getTimeZoneDisplayName(String tzID, TimeZoneNames.NameType type)

返回时区的显示名称。

Inherited methods

From class java.lang.Object

Public methods

getAvailableMetaZoneIDs

Added in API level 24
Set<String> getAvailableMetaZoneIDs ()

返回所有可用元区域ID的不可变集合。

Returns
Set<String> An immutable set of all available meta zone IDs.

getAvailableMetaZoneIDs

Added in API level 24
Set<String> getAvailableMetaZoneIDs (String tzID)

返回给定时区使用的所有可用元区ID的不可变集合。

Parameters
tzID String: The canonical time zone ID.
Returns
Set<String> An immutable set of all available meta zone IDs used by the given time zone.

getDisplayName

Added in API level 24
String getDisplayName (String tzID, 
                TimeZoneNames.NameType type, 
                long date)

返回给定日期的时区显示名称。

注意:此方法首先调用子类的getTimeZoneDisplayName(String, NameType) 当结果为空时,此方法调用getMetaZoneID(String, long)以获取从时区映射的元区ID,然后调用getMetaZoneDisplayName(String, NameType)

Parameters
tzID String: The canonical time zone ID.
type TimeZoneNames.NameType: The display name type. See TimeZoneNames.NameType.
date long: The date
Returns
String The display name for the time zone at the given date. When this object does not have a localized display name for the time zone with the specified type and date, null is returned.

getExemplarLocationName

Added in API level 24
String getExemplarLocationName (String tzID)

返回给定时区的示例位置名称。 当这个对象没有一个本地化的位置名称时,默认实现可能仍然返回一个程序生成的名字和下面描述的逻辑。

  1. Check if the ID contains "/". If not, return null.
  2. Check if the ID does not start with "Etc/" or "SystemV/". If it does, return null.
  3. Extract a substring after the last occurrence of "/".
  4. Replace "_" with " ".
For example, "New York" is returned for the time zone ID "America/New_York" when this object does not have the localized location name.

Parameters
tzID String: The canonical time zone ID
Returns
String The exemplar location name for the given time zone, or null when a localized location name is not available and the fallback logic described above cannot extract location from the ID.

getInstance

Added in API level 24
TimeZoneNames getInstance (ULocale locale)

返回指定语言环境的实例 TimeZoneNames

Parameters
locale ULocale: The locale.
Returns
TimeZoneNames An instance of TimeZoneNames

getInstance

Added in API level 24
TimeZoneNames getInstance (Locale locale)

为指定的 Locale返回 TimeZoneNames的实例。

Parameters
locale Locale: The Locale.
Returns
TimeZoneNames An instance of TimeZoneDisplayNames

getMetaZoneDisplayName

Added in API level 24
String getMetaZoneDisplayName (String mzID, 
                TimeZoneNames.NameType type)

返回元区域的显示名称。

Parameters
mzID String: The meta zone ID.
type TimeZoneNames.NameType: The display name type. See TimeZoneNames.NameType.
Returns
String The display name of the meta zone. When this object does not have a localized display name for the given meta zone with the specified type or the implementation does not provide any display names associated with meta zones, null is returned.

getMetaZoneID

Added in API level 24
String getMetaZoneID (String tzID, 
                long date)

返回给定日期的给定规范时区ID的元区域ID。

Parameters
tzID String: The canonical time zone ID.
date long: The date.
Returns
String The meta zone ID for the given time zone ID at the given date. If the time zone does not have a corresponding meta zone at the given date or the implementation does not support meta zones, null is returned.

getReferenceZoneID

Added in API level 24
String getReferenceZoneID (String mzID, 
                String region)

返回区域的给定元区域ID的参考区域ID。 注意:每个元区域必须有一个与特殊区域“001”(世界)相关的参考区域。 某些元区域可能具有特定区域“001”以外的区域特定参考区域ID。 当元区域没有区域特定的参考区域ID时,此方法返回特殊区域“001”(世界)的参考区域ID。

Parameters
mzID String: The meta zone ID.
region String: The region.
Returns
String The reference zone ID ("golden zone" in the LDML specification) for the given time zone ID for the region. If the meta zone is unknown or the implementation does not support meta zones, null is returned.

getTZDBInstance

Added in API level 24
TimeZoneNames getTZDBInstance (ULocale locale)

返回仅包含简短特定区域名称( SHORT_STANDARDSHORT_DAYLIGHT )的实例TimeZoneNames ,与IANA tz数据库的区域缩写(未本地化)兼容。
注意:输入语言环境用于解析不明确的名称(例如,“IST”被解析为以色列的以色列标准时间,而被解析为所有其他地区的印度标准时间)。 此实例返回的区域名称未本地化。

Parameters
locale ULocale
Returns
TimeZoneNames

getTimeZoneDisplayName

Added in API level 24
String getTimeZoneDisplayName (String tzID, 
                TimeZoneNames.NameType type)

返回时区的显示名称。 getDisplayName(String, NameType, long)不同,此方法不会从时区使用的元区域获取名称。

Parameters
tzID String: The canonical time zone ID.
type TimeZoneNames.NameType: The display name type. See TimeZoneNames.NameType.
Returns
String The display name for the time zone. When this object does not have a localized display name for the given time zone with the specified type, null is returned.

Hooray!