将UTC时间转换为节点js中的IST时间

时间:2017-08-08 13:03:41

标签: javascript node.js date

我有UTC时间1502212611.我必须将其转换为2017-08-08 17:16:51。但是当我使用下面的代码时,我得到2017-08-08T17:16:51.000Z

var utc = 1502212611;
var utcSeconds = utc;
var d = new Date(0); 
d.setUTCSeconds(utcSeconds);
console.log(d);

2 个答案:

答案 0 :(得分:4)

您可以使用moment.js,正如其他人已经建议的那样 但是你的问题不清楚你是否想要输出为UTC或IST(问题标题说“将UTC转换为IST”,但在问题中所需的输出(2017-08-08 17:16:51)是相应的UTC日期期/时间)

无论如何,如果你想要UTC格式的输出,你可以这样做:

var utc = 1502212611;
var m = moment.unix(utc).utc().format('YYYY-MM-DD HH:mm:ss');
console.log(m);

unix方法从纪元(1970-01-01T00:00Z)开始占用秒值。然后utc()方法确保日期格式为UTC(如果您不调用它,日期将使用默认时区显示,默认时区可能因系统而异)。

输出将是:

  

2017-08-08 17:16:51

如果您需要转换为IST,则还需要使用moment timezone

var utc = 1502212611;
var m = moment.unix(utc).tz('Asia/Kolkata').format('YYYY-MM-DD HH:mm:ss');
console.log(m);

tz方法将日期转换为另一个时区。其余代码与前一代码类似。

输出将是:

  

2017-08-08 22:46:51

请注意,我使用的是Asia/Kolkata而不是IST。这是因为API使用IANA timezones names(始终采用Region/City格式,例如Asia/KolkataEurope/Berlin

避免使用3个字母的缩写(例如ISTPST),因为它们是ambiguous and not standard - IST可以是“印度标准时间”,“以色列标准时间“或”爱尔兰标准时间“,API无法处理这种歧义(上面的代码不适用于IST,因此您必须使用适当的时区名称。)

您可以致电moment.tz.names()获取所有可用时区名称的列表(并选择最适合您情况的名称)。

在普通的Javascript中,您必须手动执行:

// pad zero if value <= 9
function pad(value) {
    return value > 9 ? value: "0" + value;
}

var utc = 1502212611;
var d = new Date(0); 
d.setUTCSeconds(utc);
var m = d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) 
        + ' ' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes())+ ':' + pad(d.getUTCSeconds());
console.log(m);

输出:

  

2017-08-08 17:16:51

答案 1 :(得分:-1)

如果你有时间,你可以使用片刻。

momenttime = moment()
momenttime.format("YYYY-MM-DD hh:mm:ss ")