Intl.DateTimeFormat.prototype.resolvedOptions()
Intl.DateTimeFormat
实例的 resolvedOptions()
方法返回一个新对象,其属性反映了在此 Intl.DateTimeFormat
对象初始化期间计算的区域设置以及日期和时间格式选项。
¥The resolvedOptions()
method of Intl.DateTimeFormat
instances returns a new object with properties reflecting the locale and date and time formatting options computed during initialization of this Intl.DateTimeFormat
object.
Try it
语法
参数
返回值
¥Return value
一个新对象,其属性反映了在给定 Intl.DateTimeFormat
对象初始化期间计算的选项。该对象具有以下属性,按列出的顺序排列:
¥A new object with properties reflecting the options computed during the initialization of the given Intl.DateTimeFormat
object. The object has the following properties, in the order they are listed:
locale
-
实际使用的区域设置的 BCP 47 语言标记。只有
ca
、hc
和nu
Unicode 扩展键可以包含在输出中。 calendar
-
支持的日历类型 之一,反映
options
参数或ca
Unicode 扩展键中为此属性提供的值。默认值取决于语言环境。 numberingSystem
-
支持的编号系统类型 之一,反映
options
参数或nu
Unicode 扩展键中为此属性提供的值。默认值取决于语言环境。 timeZone
-
IANA 时区名称 之一,反映
options
参数中为此属性提供的值。默认值是运行时的默认时区;永远不应是undefined
。注意:虽然 IANA 数据库会不时更改,但 Unicode CLDR 数据库(浏览器使用)会保留旧时区名称以确保稳定性。所有浏览器都规范化时区名称,但方向不同。例如,
new Intl.DateTimeFormat("en-US", { timeZone: "Europe/Kiev" }).resolvedOptions().timeZone
和new Intl.DateTimeFormat("en-US", { timeZone: "Europe/Kyiv" }).resolvedOptions().timeZone
在同一浏览器中返回相同的字符串,但在不同的浏览器中可能返回不同的字符串。请参阅Intl.Locale.prototype.getTimeZones
了解更多信息。¥Note: While the IANA database changes from time to time, the Unicode CLDR database (which browsers use) keeps old time zone names for stability purposes. All browsers canonicalize time zone names, but in different directions. For example,
new Intl.DateTimeFormat("en-US", { timeZone: "Europe/Kiev" }).resolvedOptions().timeZone
andnew Intl.DateTimeFormat("en-US", { timeZone: "Europe/Kyiv" }).resolvedOptions().timeZone
will return the same string in the same browser, but maybe different strings in different browsers. SeeIntl.Locale.prototype.getTimeZones
for more information. hourCycle
-
在
options
参数中为此属性提供的值,或在 Unicode 扩展键"hc"
中提供,并根据需要填写默认值。只有当options
参数包含hour
或timeStyle
时才存在。 hour12
-
在
options
参数中为此属性提供的值,或从hourCycle
属性计算得出。只有当options
参数包含hour
或timeStyle
时才存在。 weekday
,era
,year
,month
,day
,dayPeriod
,hour
,minute
,second
,fractionalSecondDigits
,timeZoneName
-
options
参数中的相应属性与所选区域设置中日期时间格式的可用组合和表示形式之间的格式匹配所产生的值。其中一些属性可能不存在,表明相应的组件不会在格式化输出中表示。如果在options
中使用了dateStyle
或timeStyle
快捷方式,则这些单独的组件属性将永远不会存在。 dateStyle
、timeStyle
-
在
options
参数中为这些属性提供的值(如果有)。
描述
¥Description
虽然 dateStyle
和 timeStyle
是单个日期和时间组件样式的快捷方式,但它们解析的确切(依赖于语言环境)组件样式不包含在解析的选项中。这确保 resolvedOptions()
的结果可以直接传递给 Intl.DateTimeFormat()
构造函数(因为同时具有 dateStyle
或 timeStyle
和单个日期或时间组件样式的 options
对象无效)。
¥Although dateStyle
and timeStyle
are shortcuts for individual date and time component styles, the exact (locale dependent) component styles they resolve to are not included in the resolved options. This ensures the result of resolvedOptions()
can be passed directly to the Intl.DateTimeFormat()
constructor (because an options
object with both dateStyle
or timeStyle
and individual date or time component styles is not valid).
示例
使用 resolvedOptions 方法
¥Using the resolvedOptions method
const germanFakeRegion = new Intl.DateTimeFormat("de-XX", { timeZone: "UTC" });
const usedOptions = germanFakeRegion.resolvedOptions();
usedOptions.locale; // "de" (because "de-XX" does not exist)
usedOptions.calendar; // "gregory"
usedOptions.numberingSystem; // "latn"
usedOptions.timeZone; // "UTC"
usedOptions.month; // "numeric"
获取用户的时区和语言环境偏好
¥Getting the user's time zone and locale preferences
没有任何选项的 Intl.DateTimeFormat
构造函数使用当前系统设置。你可以使用 resolvedOptions()
来获取用户当前时区和语言环境的首选日历和数字系统:
¥The Intl.DateTimeFormat
constructor without any options uses the current system settings. You can use resolvedOptions()
to get the user's current time zone and locale's preferred calendar and numbering system:
const systemOptions = new Intl.DateTimeFormat().resolvedOptions();
systemOptions.timeZone; // e.g., "Europe/Brussels" or "Asia/Riyadh"
systemOptions.calendar; // e.g., "gregory" or "islamic-umalqura"
systemOptions.numberingSystem; // e.g., "latn" or "arab"
systemOptions.locale; // e.g., "nl-BE" or "ar-SA"
规范
Specification |
---|
ECMAScript Internationalization API Specification # sec-intl.datetimeformat.prototype.resolvedoptions |
浏览器兼容性
BCD tables only load in the browser
也可以看看
¥See also