作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ECMA-402 International API 来获取非本地时区(服务器时区是 UTC)中的时区缩写。我知道其他方法可以得到这个。我试图了解并充分利用 International API 的局限性。我可以自己获取完整的时区名称并进行映射,但是由于缩写在 IANA tz 数据库中,并且国际 API 应该基于此,它似乎应该能够生成它们,这让我觉得我是做错事。
我有以下代码:
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));
Wed, 04/08/2020, 18:14:50 GMT+12
Tue, 04/07/2020, 23:14:50 PDT
最佳答案
ECMAScript 国际化 API 的大多数实现都从 Unicode CLDR 派生时区缩写字符串。 ,而不是来自 IANA。 IANA 中的缩写词只有英文,近年来,许多缩写词已被删除,人们发现它们是被发明出来的。
不幸的是,CLDR 数据集中实际包含的时区缩写很少。
一般来说,时区缩写很难达成一致。在某些情况下,同一时区会使用多个缩写。有些文化改用英语缩写,而另一些文化则使用自己的语言,而许多文化根本不使用它们。
鉴于这一切,我想说您仍然应该使用 Intl API 给出的输出。在有缩写的地方你会得到它们,在没有它们的地方你会有一个数字偏移量。是的——这就是当前的技术水平。
关于javascript - 如何从 javascript Intl.DateTimeFormat 获取时区缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61094809/
我是一名优秀的程序员,十分优秀!