js timezone - 错误的一天到来

时间:2017-03-08 15:54:48

标签: javascript datapicker

我对boostrap-datepicker有疑问。这个例子中我的问题的核心

var array = [2017, 12, 27];
var date = new Date(array);
console.log(date);
//Wed Dec 27 2017 00:00:00 GMT+0300 (RTZ 2 (winter))
var day =  date.getUTCDate();
console.log(day);
//26  -> I WANT 27
console.log(month);
//11  -> I WANT 12
console.log(year);
//2017

你可以看到最后我得到26(我需要的那一天是27)和11(我需要的月份是12)。 如何更改此代码(删除我的时区)以获得2017年12月27日

1 个答案:

答案 0 :(得分:1)

您遇到两个问题:

  1. 您的时区(GMT + 0300)与UTC之间的差异意味着您的时区中的2017年12月27日午夜是晚上9点。 12月 26th 2017 UTC。

  2. 我假设您通过month获得getUTCMonth。月值以0 = 1月开头,这就是为什么你得到11。

  3. 要使用Date 2017年12月27日午夜,请使用Date.UTC

    var dt = new Date(Date.UTC(2017, 12 - 1, 27));
    console.log(dt.getUTCDate());      // 27
    console.log(dt.getUTCMonth() + 1); // 12
    console.log(dt.getUTCFullYear());  // 2017

    请注意+ 1之后的getUTCMonth,因为再次,月份数字为0 = 1月到11月= 12月。