Intl.DateTimeFormat'calendar'和'numberingSystem'选项永远不起作用

问题描述 投票:1回答:1

我正在尝试为calendar对象设置numberingSystemIntl.DateTimeFormat选项。当通过下面的locale参数设置它们时,它起作用:

var dateFormat = new Intl.DateTimeFormat('en-US-u-ca-chinese-nu-arab');
var usedOptions = dateFormat.resolvedOptions();

console.log("resolved calendar: " + usedOptions.calendar);
console.log("resolved numbering: " + usedOptions.numberingSystem);

但是当我尝试通过如下所示的options参数设置它们时,它将不起作用。 Mozilla MDN specifically mentions应该可以正常工作:

enter image description here

但是当您尝试时,它不会:

var options = {calendar: 'chinese', numberingSystem: 'arab'};
var dateFormat = new Intl.DateTimeFormat('default', options);
var usedOptions = dateFormat.resolvedOptions();

console.log("resolved calendar: " + usedOptions.calendar);
console.log("resolved numbering: " + usedOptions.numberingSystem);

我已经在node.js和Firefox上进行了测试,结果相同。在线JavaScript模拟器也给出相同的结果。

我仍然可以通过语言环境字符串设置它们,但是这很丑陋。如果可能的话,我更喜欢使用options参数。

javascript datetime-format
1个回答
0
投票

我认为Mozilla MDN对此可能是错误的。如果我正确地读取了the ECMA-402 spec for constructing a DateTimeFormat,则在第13.1.1节的第8步中考虑了DateTimeFormat选项,但是在第17步中,我们转到了calendar,在第9.2.7节的步骤9.i.iv中,如果在该语言环境中已经可以选择日历,日历选项只会覆盖默认值。

就是说,我似乎无法提出一个能按阅读规范期望的那样工作的案例,所以也许我读错了。我希望第二行将返回ResolveLocale,因为日语和阳历在日语语言环境中将是有效的选择:

'japanese'
© www.soinside.com 2019 - 2024. All rights reserved.