在使用时Intl.DateTimeFormat,我注意到在使用不具有指定时区的语言环境时,未设置时区短名称,例如en-US语言环境不包含Australia/Sydney时区信息。是否有一种AEST在保留en-US语言环境的同时进行显示的方法?否则,我们将不得不将IANA时区映射到语言环境,这似乎有些过分。var date = new Date();var options = { hour: 'numeric', minute: 'numeric', second: 'numeric', timeZone: 'Australia/Sydney', timeZoneName: 'short'};// displays 12:14:27 am AESTconsole.log(new Intl.DateTimeFormat('en-AU', options).format(date));// 12:14:27 AM GMT+10console.log(new Intl.DateTimeFormat('en-US', options).format(date));
1 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
据我所知,如果您没有编写自己的潜在风险代码来处理所需的内容,那么您就不走运了。
Intl(以及大多数处理l10n和i18n的JS框架)通常背负于CLDR。CLDR为此类事情定义了规则。在这种情况下,对于美国英语,没有名称的“特定短名称”版本,因此它会退回到本地化的GMT版本。
我建议您不理会它,并与其一起生活。任何一种基于区域设置的黑客都不是一个好主意,因为您可能必须对多个区域设置执行此操作,然后在不断评估CLDR时更新Intl时应对这些更改。
添加回答
举报
0/150
提交
取消
