Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js时区-获取的日期不正确_Javascript_Datapicker - Fatal编程技术网

Javascript js时区-获取的日期不正确

Javascript js时区-获取的日期不正确,javascript,datapicker,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

我对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日

您遇到了两个问题:

  • 您所在时区(GMT+0300)与UTC之间的差异意味着您所在时区2017年12月27日午夜为晚上9点。2017年12月26日协调世界时

  • 我假设您通过
    getUTCMonth
    获得
    month
    。月份值以0=一月开始,这就是为什么得到11

  • 要在
    日期中获得2017年12月27日午夜,请使用
    日期。UTC

    var dt=新日期(日期:UTC(2017年12月1日至27日));
    console.log(dt.getUTCDate());//27
    console.log(dt.getUTCMonth()+1);//12
    
    console.log(dt.getUTCFullYear());//2017
    这不是您遇到的问题,但请注意,
    日期
    构造函数不接受数组。所以数组被转换成字符串,这意味着你真的在做
    newdate(“2017,12,27”)
    ——这不是规范所说的受支持的格式(事实上,我很惊讶它可以在Chrome上工作)。如果您有这样的部分,请使用多参数
    Date
    constructor:
    newdate(2017,12-1,27)
    。但同样,这不是问题所在。这可能是下一个问题。:-)
    month
    year
    来自哪里?它是带日期选择器的可编辑js小部件当您执行getUTCMonth()时,您将得到一个基于0的月份(即0到11)。你必须增加它才能得到月份(即加1)。那么我怎么才能决定第一个问题呢?@johnwwin:我不明白你的意思。上述方法可以处理这两个问题。