最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Node.js的新日期并不反映.ENV时区TZ变种

运维笔记admin11浏览0评论

Node.js的新日期并不反映.ENV时区TZ变种

Node.js的新日期并不反映.ENV时区TZ变种

在Node.js的和Mac系统在一个有趣的问题只是偶然 - 基本上,如果你在.ENV文件,变量TZ运行与集时区VAR节点的实例,并且本机是在不同的时区,日期创建为f **卯起来在麦汁可能的方式,使:

时区设置正确

但是当你创建一个新的日期,时区并没有反映


看到这个例子中,(我的机器是在CET,时区欧洲/布拉格):

~/
11:13 (CET) $ node
new Date()
2019-02-04T10:30:23.053Z # Europe/Prague
new Date().getTimezoneOffset()
-60 # Europe/Prague
.exit

主场迎战TZ ENV集时区

✔ ~/
11:30 (CET) $ TZ=America/New_York node
new Date()
2019-02-04T10:31:40.968Z # 10:31! :D
new Date().getTimezoneOffset()
300 # America/New_York!

因此,它是不可能创建一个正确的日期,那么,因为所有的JS库就像时刻在结束日期对象使用。我的观点是,你永远也不会设置TZ变种运行Node.js的服务器,同时,我错过了什么?

回答如下:

你可以解决moment-timezone节点包您的问题。下面的代码可以帮助你解决你的问题。

const moment = require('moment-timezone')

function convertDate(dateInUTCFormat) { 
    return new Promise((resolve, reject) => { 
        var dec = moment(dateInUTCFormat);
        var normalDate = dec.tz('Asia/Kolkata').format('YYYY-MM-DD');  // GMT +5:30 (India)
        resolve(normalDate);
    }) 
}

另外你需要通过你在如2019-02-04T10:30:23.053Z UTC格式得到convertDate功能,并通过您的时区,我通过我的时区Asia/Kolkata日期格式。也许这将帮助你找到你的解决方案。

发布评论

评论列表(0)

  1. 暂无评论