如何在node.js中设置默认时区?
当前回答
有时你可能在其他地方的虚拟服务器上运行代码——当运行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');
其他回答
只要在你的主文件中设置环境变量,比如index.js或app.js或main.js或任何你的文件名:
process.env.TZ = "Asia/Tehran";
这将设置将在整个节点应用程序中使用的时区
你可以通过将环境变量TZ设置为UTC来强制Node.js进程时区
因此,所有时间都将以UTC+00:00计算
完整名单:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
示例package.json:
{
"scripts": {
"start": "TZ='UTC' node index.js"
}
}
根据这个谷歌组线程,可以在调用任何日期函数之前设置TZ环境变量。刚刚测试了一下,它可以工作。
> process.env.TZ = 'Europe/Amsterdam'
'Europe/Amsterdam'
> d = new Date()
Sat, 24 Mar 2012 05:50:39 GMT
> d.toLocaleTimeString()
'06:50:39'
> ""+d
'Sat Mar 24 2012 06:50:39 GMT+0100 (CET)'
但是以后不能更改时区,因为那时Node已经读取了环境变量。
从节点13开始,您现在可以重复设置process.env.TZ,它将反映在新的Date对象的时区中。我不知道我是否会在生产代码中使用它,但它在单元测试中绝对有用。
> process.env.TZ = 'Europe/London';
'Europe/London'
> (new Date().toString())
'Fri Mar 20 2020 09:39:59 GMT+0000 (Greenwich Mean Time)'
> process.env.TZ = 'Europe/Amsterdam';
'Europe/Amsterdam'
> (new Date().toString())
'Fri Mar 20 2020 10:40:07 GMT+0100 (Central European Standard Time)'
对于那些将Node.js应用程序部署到Amazon AWS Elastic Beanstalk的人,这里有一个答案。我还没有在其他地方看到过这样的记录:
在Configuration -> Software -> Environment Properties下,简单地设置键值对TZ和您的时区,例如America/Los Angeles,然后应用更改。
你可以通过在Node应用程序中输出new Date(). tostring()来验证效果,并注意时区后缀。
推荐文章
- Node.js上的html解析器
- 错误:无法找到模块“webpack”
- 如何改变时间和时区在iPhone模拟器?
- 在node.js中使用async / await文件系统
- NodeJS -用NPM安装错误
- 如何为本地安装npm包设置自定义位置?
- 回调函数来处理管道的完成
- Express函数中的“res”和“req”参数是什么?
- node.js TypeError:路径必须是绝对路径或指定根路径到res.sendFile[解析JSON失败]
- Passport.js -错误:序列化用户到会话失败
- Node.js vs .Net性能
- 从电子应用程序中删除菜单栏
- 如何用node.js实现一个安全的REST API
- 如何处理Node.js中的循环依赖
- 在猫鼬,我如何排序的日期?(node . js)