Intl.DateTimeFormat.prototype.resolvedOptions()

Baseline 已广泛支持

此功能已成熟,可跨多种设备和浏览器版本使用。自 2017 年 9 月以来,它已在浏览器中提供。

resolvedOptions() 方法是 Intl.DateTimeFormat 实例的一个方法,它返回一个新对象,该对象包含此 DateTimeFormat 对象初始化期间计算出的选项。

试一试

const region = new Intl.DateTimeFormat("zh-CN", { timeZone: "UTC" });
const options = region.resolvedOptions();

console.log(options.locale);
// Expected output: "zh-CN"

console.log(options.calendar);
// Expected output: "gregory"

console.log(options.numberingSystem);
// Expected output: "latn"

语法

js
resolvedOptions()

参数

无。

返回值

一个新对象,其中包含此 DateTimeFormat 对象初始化期间计算出的选项。该对象具有以下属性,按照列出的顺序排列:

locale

实际使用的区域设置的 BCP 47 语言标记,由 区域设置协商 过程确定。只有请求的 cahcnu Unicode 扩展键才可能包含在输出中。

calendar

options 参数中为此属性提供的值,或使用 Unicode 扩展键 "ca",并根据需要填充默认值。它是此区域设置支持的 日历类型。默认值取决于区域设置。

numberingSystem

options 参数中为该属性提供的值,或使用 Unicode 扩展键 "nu",并根据需要填充默认值。它是此区域设置支持的 数字系统。默认值取决于区域设置。

timeZone

options 参数中为此属性提供的值,并根据需要填充默认值。它是 IANA 时区名称。默认值是运行时的默认时区。

注意:Temporal 的标准化要求浏览器使用与原始指定相同的标识符,而不是将其规范化为另一个别名。有关更多信息,请参阅 时区和偏移量

hourCycle 可选

options 参数中为此属性提供的值,或使用 Unicode 扩展键 "hc",并根据需要填充默认值。如果 options 中提供了 hour12,则它将覆盖其他 hourCycle 设置。仅当已解析的选项还包括 hourtimeStyle 时才存在。它的值可以是 "h11""h12""h23""h24"。默认值取决于区域设置,但 "h24" 永远不会是默认值。

hour12 可选

hourCycle 计算得出。仅当已解析的选项还包括 hourtimeStyle 时才存在。如果 hourCycle"h11""h12",则为 true;如果 hourCycle"h23""h24",则为 false

weekdayerayearmonthdaydayPeriodhourminutesecondfractionalSecondDigitstimeZoneName 可选

options 参数中的相应属性与所选区域设置中可用的日期时间格式化组合和表示形式之间进行格式匹配所产生的值。其中某些属性可能不存在,这表示相应的组件不会在格式化输出中显示。weekdayeradayPeriod 的值可以是 "narrow""short""long"yeardayhourminutesecond 的值可以是 "numeric""2-digit""narrow"month 的值可以是 "numeric""2-digit""narrow""short""long"fractionalSecondDigits 的值可以是 123timeZoneName 的值可以是 "short""long""shortOffset""longOffset""shortGeneric""longGeneric"

如果在 options 中请求了这些属性,则构造函数会阻止指定 dateStyletimeStyle,因此下面的组将永远不会出现。

dateStyletimeStyle 可选

options 参数中为这些属性提供的值。它们可以是 "full""long""medium""short""none"。其中某些属性可能不存在,这表示相应的组件不会在格式化输出中显示。

如果在 options 中请求了这些属性,则构造函数会阻止指定单个日期时间组件选项,因此上述组将永远不会出现。

注意:尽管 dateStyletimeStyle 是单个日期和时间组件样式的快捷方式,但它们解析到的确切(取决于区域设置的)组件样式不包含在已解析的选项中。这确保了 resolvedOptions() 的结果可以直接传递给 Intl.DateTimeFormat() 构造函数(因为同时包含 dateStyletimeStyle 和单个日期或时间组件样式的 options 对象无效)。

示例

使用 resolvedOptions 方法

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"

获取用户的时区和区域设置偏好

不带任何选项的 Intl.DateTimeFormat 构造函数会使用当前的系统设置。您可以使用 resolvedOptions() 来获取用户当前的默认时区以及区域设置偏好的日历和数字系统。

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"

规范

规范
ECMAScript® 2026 国际化 API 规范
# sec-intl.datetimeformat.prototype.resolvedoptions

浏览器兼容性

另见