如何在node.js中设置默认时区?


当前回答

你可以使用瞬间时区。它可以让你设置你的位置,也照顾到日光节约时间。

其他回答

只要在你的主文件中设置环境变量,比如index.js或app.js或main.js或任何你的文件名:

process.env.TZ = "Asia/Tehran";

这将设置将在整个节点应用程序中使用的时区

你可以使用tzdata库来配置全局时区:

npm install tzdata -y

使用变量设置环境后,例如:TZ=America/Bogota

在你的项目中测试:

new Date()

希望能帮到你

对于那些将Node.js应用程序部署到Amazon AWS Elastic Beanstalk的人,这里有一个答案。我还没有在其他地方看到过这样的记录:

在Configuration -> Software -> Environment Properties下,简单地设置键值对TZ和您的时区,例如America/Los Angeles,然后应用更改。

你可以通过在Node应用程序中输出new Date(). tostring()来验证效果,并注意时区后缀。

不幸的是,设置process.env.TZ工作得不是很好——基本上不确定什么时候更改会生效)。

因此,在启动节点之前设置系统时区是唯一正确的选择。

但是,如果您不能这样做,应该可以使用节点时间作为一种变通方法:以本地时间或UTC时间获取时间,并将它们转换为所需的时区。参见如何在Nodejs中使用时区偏移?获取详细信息。

更新node.js v13版本

正如@Tom指出的,现在v13中内置了完整的icu支持。因此可以省略设置步骤。您仍然可以自定义在运行时构建或使用icu的方式:https://nodejs.org/api/intl.html

对于Windows上的node.js,您可以执行以下操作:

如果已经安装full-icu,请安装它,它将正确应用日期区域设置 NPM I全icu 或全局:NPM I -g full-icu 在代码中使用toLocaleString(),例如: 新的日期()。toLocaleString('en-AU', {timeZone: '澳大利亚/墨尔本'}) 这将产生类似于:25/02/2019,3:19:22 pm。如果你喜欢24小时,'en-GB'将产生:25/02/2019,15:19:22

对于node.js作为Azure web应用程序,除了WEBSITE_TIME_ZONE的应用程序设置外,你还需要将NODE_ICU_DATA设置为例如<你的项目>\node_modules\full-icu,当然,在你完成npm i full-icu之后。不建议在Azure上全局安装包,因为该目录是临时的,可能会被删除。

裁判: 1. NodeJS没有正确应用日期区域设置

你也可以用intl选项构建node.js,更多信息在这里