如何在node.js中设置默认时区?
当前回答
这里是一个100%工作的例子,在NodeJs中获得自定义时区日期时间,而不使用任何外部模块:
const nDate =新日期()。toLocaleString(“en - us”{ 时区:“亚洲/加尔各答” }); console.log (nDate);
其他回答
const nDate =新日期()。toLocaleString(“en - us”{ 时区:“亚洲/首尔” }); console.log (nDate);
有时你可能在其他地方的虚拟服务器上运行代码——当运行NODEJS或其他风格时,这可能会变得混乱。
这里有一个修复程序,可以让你轻松地使用任何时区。
查看这里的时区列表
只需将时区短语放在FORMAT行的括号内。
在本例中,我将EPOCH转换为Eastern。
//RE: https://www.npmjs.com/package/date-and-time
const date = require('date-and-time');
let unixEpochTime = (seconds * 1000);
const dd=new Date(unixEpochTime);
let myFormattedDateTime = date.format(dd, 'YYYY/MM/DD HH:mm:ss A [America/New_York]Z');
let myFormattedDateTime24 = date.format(dd, 'YYYY/MM/DD HH:mm:ss [America/New_York]Z');
不幸的是,设置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,更多信息在这里
另一种至少在Linux环境下对我有用的方法是像这样运行你的Node.js应用程序:
env TZ='Europe/Amsterdam' node server.js
这至少可以确保从一开始就正确地设置了时区。
推荐文章
- 很好的初学者教程socket.io?
- CALL_AND_RETRY_LAST分配失败-进程内存不足
- 在Ubuntu上安装Node.js
- 使用express.js代理
- 在c#中创建一个特定时区的DateTime
- Node -使用NODE_MODULE_VERSION 51根据不同的Node.js版本编译
- RabbitMQ / AMQP:单队列,同一消息的多个消费者?
- 如何在JavaScript中获得时区名称?
- Node.js同步执行系统命令
- 禁用包的postinstall脚本
- Node.js上的html解析器
- 错误:无法找到模块“webpack”
- 如何改变时间和时区在iPhone模拟器?
- 在node.js中使用async / await文件系统
- NodeJS -用NPM安装错误