JS将日期转换Date对象时的问题 发表于 2018-09-17 | 更新于 2019-05-22 | 分类于 JavaScript | 阅读次数: 本文字数: 590 | 阅读时长 ≈ 1 分钟 二话不说上代码 在ES5之中,如果日期采用连词线(-)格式分隔,且具有前导0,JavaScript会认为这是一个ISO格式的日期字符串,导致返回的时间是以UTC时区计算的 1234567891011121314 new Date('2014-01-01') // Wed Jan 01 2014 08:00:00 GMT+0800 (CST) new Date('2014-1-1') // Wed Jan 01 2014 00:00:00 GMT+0800 (CST)``` 上面代码中,日期字符串有没有前导0,返回的结果是不一样的。如果没有前导0,JavaScript引擎假设用户处于本地时区,所以本例返回0点0分。如果有前导0(即如果你以ISO格式表示日期),就假设用户处于格林尼治国际标准时的时区,所以返回8点0分。但是,ES6改变了这种做法,规定凡是没有指定时区的日期字符串,一律认定用户处于本地时区。 问题解决``` javascript new Date('2014/01/01') // Wed Jan 01 2014 00:00:00 GMT+0800 (CST) new Date('2014/1/1') // Wed Jan 01 2014 00:00:00 GMT+0800 (CST) 本文作者: Defy 本文链接: http://defypro.github.io/2018/09/17/problems-with-js-converting-date-objects/ 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!