提问人:muki 提问时间:10/2/2023 最后编辑:Bergimuki 更新时间:10/6/2023 访问量:89
Intl.supportedValuesOf('timezone') 不提供最新的时区信息
Intl.supportedValuesOf('timezone') doesn't provide the latest timezone information
问:
我想获取最新的时区列表。我正在使用 ,这是输出,例如:Intl.supportedValuesOf('timeZone')
- “亚洲/西贡”
- “太平洋/波纳佩”
上述城市已被弃用。例如,当我研究时区时,我发现它已被重命名为 ,并且不再作为有效时区存在。'Asia/Saigon'
'Asia/Ho_Chi_Minh'
'Pacific/Ponape'
我很好奇为什么不提供最新的时区信息。Intl.supportedValuesOf('timeZone')
是否有其他方法可以获取最新的时区列表?谢谢。
答:
1赞
Matt Johnson-Pint
10/6/2023
#1
我相信这是一个已知的错误。一些问题的链接:这里、这里和这里。可能是其他人。
原因是该列表来自 ICU 函数调用,该调用仅返回“规范”区域(根据 ICU/CLDR,而不是 IANA),不包括别名,也排除了系统 () 区域。Etc/*
换句话说,这是 V8 和其他 JS 引擎中的实现错误,而不是 JavaScript 本身的错误。
评论
1赞
Matt Johnson-Pint
10/6/2023
关于为什么 IANA 和 CLDR 在规范化方面存在差异的更多信息,这是我关于该主题的其他答案之一的一部分:stackoverflow.com/a/45868768/634824
0赞
Bergi
10/6/2023
您链接的所有错误报告都不是关于排除已弃用的时区值的。如果有的话,它们是关于包含更多价值观的。
1赞
Bergi
10/6/2023
这个问题可能是相关的,但它说“如果 Intl.supportedValuesOf('timeZone')
输出所有有效值,甚至是来自系统的值,那就太好了。这不是 SO 问题的 OP 要问的:他们希望从输出中删除已弃用的时区,所以恰恰相反。
2赞
Matt Johnson-Pint
10/6/2023
看起来正在努力解决这些规范化差异。希望这也能解决这个问题。请参阅 github.com/tc39/ecma402/issues/806、github.com/unicode-org/cldr/pull/3105 和 unicode-org.atlassian.net/browse/CLDR-14453
1赞
Bergi
10/6/2023
是的,我认为 github.com/tc39/ecma402/issues/806 完全适用于 OP 问题!
评论