我正在尝试使用ECMA-402国际API来获取不是本地时区(服务器时区为UTC)的时区缩写。我知道其他获取方法,但我想了解国际API的限制并充分利用它。我可以获取完整的时区名称并自行映射,但由于缩写在IANA tz数据库中,而国际API应该基于此,因此它似乎应该能够生成它们,这让我认为我做错了什么。
我有以下代码:
在node 12.16.1和Firefox 73.0.1中,这将产生如下输出:
我有以下代码:
const fmt = new Intl.DateTimeFormat('en', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: 'numeric',
fractionalSecondDigits: 3,
hour12: false,
weekday: 'short',
timeZoneName: 'short',
timeZone: 'Pacific/Auckland'
});
const now = new Date();
console.log(fmt.format(now));
const fmt2 = new Intl.DateTimeFormat('en', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: 'numeric',
fractionalSecondDigits: 3,
hour12: false,
weekday: 'short',
timeZoneName: 'short',
timeZone: 'America/Los_Angeles'
});
console.log(fmt2.format(now));
在node 12.16.1和Firefox 73.0.1中,这将产生如下输出:
Wed, 04/08/2020, 18:14:50 GMT+12
Tue, 04/07/2020, 23:14:50 PDT
美国洛杉矶时区按预期获取时区缩写,但太平洋/奥克兰时区没有。IANA tz数据库具有Pacific/Auckland的缩写,并且操作系统(Debian Linux)会生成它们。
是否有什么不同的方法可以从国际API获取缩写?还是这就是现状?
我注意到,luxon和date-fns-tz都依赖于国际API,它们也无法生成Pacific/Auckland的缩写。