Intl.DateTimeFormat.prototype.resolvedOptions()
resolvedOptions()
方法是 Intl.DateTimeFormat
实例的方法,它返回一个新对象,该对象包含反映在此 Intl.DateTimeFormat
对象初始化期间计算出的区域设置和日期和时间格式选项的属性。
试一试
语法
resolvedOptions()
参数
无。
返回值
一个新对象,包含反映在给定 Intl.DateTimeFormat
对象初始化期间计算出的选项的属性。该对象具有以下属性,按列出顺序排列:
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
。 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
参数中为此属性提供的值。
描述
尽管 dateStyle
和 timeStyle
是单个日期和时间组件样式的快捷方式,但它们解析到的确切(取决于区域设置)组件样式不包含在已解析的选项中。这确保了 resolvedOptions()
的结果可以直接传递给 Intl.DateTimeFormat()
构造函数(因为包含 dateStyle
或 timeStyle
以及单个日期或时间组件样式的 options
对象无效)。
示例
使用 resolvedOptions 方法
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"
获取用户的时区和区域设置首选项
不带任何选项的 Intl.DateTimeFormat
构造函数使用当前系统设置。您可以使用 resolvedOptions()
获取用户的当前时区和区域设置的首选日历和数字系统
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"
规范
规范 |
---|
ECMAScript 国际化 API 规范 # sec-intl.datetimeformat.prototype.resolvedoptions |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。