我们如何在运行时获取 NodeJs 中所有支持的时区的列表?
用例:
Nodejs 文档提到Node 可以与不同的 ICU 设置一起使用,因此硬编码列表(如timezones.json)将不起作用。
我发现了一些相关的问题,但似乎没有人回答这个(简单?)问题...
例如Node.js 从哪里获取时区数据?
NodeJs >= 18 支持Intl.supportedValuesOf()
Intl.supportedValuesOf('timeZone')
Run Code Online (Sandbox Code Playgroud)
我认为目前没有简单的方法可以在运行时获取node.js中支持的时区列表:
一种解决方法是以某种方式获取时区列表并单独测试每个时区。
有许多预定义的时区列表:
但是,由于我们有一个数据库应用程序,因此我们首先获取数据库支持的所有时区的列表 - 请参阅PostgreSql 文档:
SELECT name
FROM pg_timezone_names
ORDER BY name;
Run Code Online (Sandbox Code Playgroud)
然后检查每个节点是否受 Nodejs 支持(这是一些 TypeScript 伪代码):
try {
new Intl.DateTimeFormat('en-US', {
timeZone
})
// timezone is valid - add to the valid list
} catch (e) {
// timezone is invalid - maybe write a log msg
}
Run Code Online (Sandbox Code Playgroud)
现在我们有了数据库和 NodeJ 中有效的所有时区的列表。
目前有(PostgreSql 12
、NodeJs 14
):
547
有效时区 49
无效时区(即 PostgreSql 已知,但 NodeJs 不知道):例如America/Argentina/ComodRivadavia
, US/Alaska
, .. 归档时间: |
|
查看次数: |
6516 次 |
最近记录: |