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

语法

¥Syntax

js
resolvedOptions()

参数

¥Parameters

没有任何。

¥None.

返回值

¥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 语言标记。只有 cahcnu 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().timeZonenew 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 and new 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. See Intl.Locale.prototype.getTimeZones for more information.

hourCycle

options 参数中为此属性提供的值,或在 Unicode 扩展键 "hc" 中提供,并根据需要填写默认值。只有当 options 参数包含 hourtimeStyle 时才存在。

hour12

options 参数中为此属性提供的值,或从 hourCycle 属性计算得出。只有当 options 参数包含 hourtimeStyle 时才存在。

weekday, era, year, month, day, dayPeriod, hour, minute, second, fractionalSecondDigits, timeZoneName

options 参数中的相应属性与所选区域设置中日期时间格式的可用组合和表示形式之间的格式匹配所产生的值。其中一些属性可能不存在,表明相应的组件不会在格式化输出中表示。如果在 options 中使用了 dateStyletimeStyle 快捷方式,则这些单独的组件属性将永远不会存在。

dateStyletimeStyle

options 参数中为这些属性提供的值(如果有)。

描述

¥Description

虽然 dateStyletimeStyle 是单个日期和时间组件样式的快捷方式,但它们解析的确切(依赖于语言环境)组件样式不包含在解析的选项中。这确保 resolvedOptions() 的结果可以直接传递给 Intl.DateTimeFormat() 构造函数(因为同时具有 dateStyletimeStyle 和单个日期或时间组件样式的 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).

示例

¥Examples

使用 resolvedOptions 方法

¥Using the resolvedOptions method

js
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:

js
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

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看