Javascript日期解析原因

时间:2016-09-01 22:52:02

标签: javascript date

有人可以更新我对javascripts new Date('')解析的理解吗?

例如,为什么会这样:

var _date = new Date('2016-10-15');

等于

_date = Fri Oct 14 2016 17:00:00 GMT-0700 (US Mountain Standard Time) {}

并且不等于

Oct 15 2016

如果你使用moment.js:

var _testdate = moment('2016-10-15').toDate();

_testdate = Sat Oct 15 2016 00:00:00 GMT-0700 (US Mountain Standard Time) {}

1 个答案:

答案 0 :(得分:3)

因为,与ISO 8601相反,日期构造函数和Date.parse将类似'2016-10-15'的日期形式视为UTC,而像moment.js这样的库与ISO 8601一致并将它们视为本地

因此,由于您的系统设置为UTC-0700,因此'2016-10-15'被视为2016-10-15T00:00:00Z(即UTC + 0000),即2016-10-14 17:00 :00在您当地的时区。