Date.UTC无法正确显示

时间:2017-03-09 08:03:35

标签: javascript meteor

此Meteor客户端方法尝试返回Thu Mar 09 2017 00:00:00 GMT+1100 (AEDT),但它返回Thu Mar 09 2017 11:00:00 GMT+1100 (AEDT) 怎么修好? THX

    dateToISO: (date) => { // date format in YYYY-MM-DD like "2017-03-09"
      const dArr = date.split('-');
      return new Date(Date.UTC(parseInt(dArr[0]), parseInt(dArr[1]) - 1, parseInt(dArr[2]), 0, 0, 0, 0));
    }

1 个答案:

答案 0 :(得分:0)

好吧,当我尝试重现它时,实际上这似乎是Date.UTC函数中的一个错误。

我试图这样做:

console.log("Unmanipulate: " + new Date(Date.UTC(97, 4, 13, 0, 0)));
console.log("Manipulate: " + new Date(Date.UTC(97, 4, 13, -3, 0)));

返回:

Unmanipulate: Tue May 13 1997 03:00:00 GMT+0300 (IDT)
Manipulate: Tue May 13 1997 00:00:00 GMT+0300 (IDT)

看起来时区是通过小时参数,这真的很奇怪。也许我错过了什么。

您可以详细了解此功能的规范here

我建议使用Moment.js,这样可以很容易地处理js中的日期,如下所示:

function dateToISO (date) {
    return moment(date).utc().format(); 
}