Intl.DateTimeFormat.prototype.resolvedOptions()
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"
语法
resolvedOptions()
参数
无。
返回值
一个新对象,其中包含此 DateTimeFormat 对象初始化期间计算出的选项。该对象具有以下属性,按照列出的顺序排列:
locale-
实际使用的区域设置的 BCP 47 语言标记,由 区域设置协商 过程确定。只有请求的
ca、hc和nuUnicode 扩展键才可能包含在输出中。 calendar-
在
options参数中为此属性提供的值,或使用 Unicode 扩展键"ca",并根据需要填充默认值。它是此区域设置支持的 日历类型。默认值取决于区域设置。 numberingSystem-
在
options参数中为该属性提供的值,或使用 Unicode 扩展键"nu",并根据需要填充默认值。它是此区域设置支持的 数字系统。默认值取决于区域设置。 timeZone-
在
options参数中为此属性提供的值,并根据需要填充默认值。它是 IANA 时区名称。默认值是运行时的默认时区。注意:
Temporal的标准化要求浏览器使用与原始指定相同的标识符,而不是将其规范化为另一个别名。有关更多信息,请参阅 时区和偏移量。 hourCycle可选-
在
options参数中为此属性提供的值,或使用 Unicode 扩展键"hc",并根据需要填充默认值。如果options中提供了hour12,则它将覆盖其他hourCycle设置。仅当已解析的选项还包括hour或timeStyle时才存在。它的值可以是"h11"、"h12"、"h23"或"h24"。默认值取决于区域设置,但"h24"永远不会是默认值。 hour12可选-
从
hourCycle计算得出。仅当已解析的选项还包括hour或timeStyle时才存在。如果hourCycle是"h11"或"h12",则为true;如果hourCycle是"h23"或"h24",则为false。 weekday、era、year、month、day、dayPeriod、hour、minute、second、fractionalSecondDigits、timeZoneName可选-
在
options参数中的相应属性与所选区域设置中可用的日期时间格式化组合和表示形式之间进行格式匹配所产生的值。其中某些属性可能不存在,这表示相应的组件不会在格式化输出中显示。weekday、era和dayPeriod的值可以是"narrow"、"short"或"long";year、day、hour、minute和second的值可以是"numeric"、"2-digit"或"narrow";month的值可以是"numeric"、"2-digit"、"narrow"、"short"或"long";fractionalSecondDigits的值可以是1、2或3;timeZoneName的值可以是"short"、"long"、"shortOffset"、"longOffset"、"shortGeneric"或"longGeneric"。如果在
options中请求了这些属性,则构造函数会阻止指定dateStyle和timeStyle,因此下面的组将永远不会出现。 dateStyle、timeStyle可选-
在
options参数中为这些属性提供的值。它们可以是"full"、"long"、"medium"、"short"或"none"。其中某些属性可能不存在,这表示相应的组件不会在格式化输出中显示。如果在
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® 2026 国际化 API 规范 # sec-intl.datetimeformat.prototype.resolvedoptions |
浏览器兼容性
加载中…