为什么moment.js减法不起作用?

Sap*_*lio 3 javascript momentjs

我试图使用moment.js将7天减去给定日期

var date ="2015-10-19";
var now =  moment(date);
var oneWeekAgo = moment(date).subtract(7,'days');
Run Code Online (Sandbox Code Playgroud)

当我检查值now并且oneWeekAgo具有相同的内容时.

Moment {_isAMomentObject: true, _i: "2015-10-19", _f: "YYYY-MM-DD ", _isUTC: false, _pf: Object…}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将7天减去当前时间,则可以正常工作.

var oneWeekAgo = moment().subtract(7,'days');

我注意到,没有参数的instanciate片刻会改变他的结构,_d而是将日期存储在属性上_i.

Moment {_isAMomentObject: true, _isUTC: false, _pf: Object, _locale: Locale, _d: Tue Oct 13 2015 13:34:50 GMT+0200 (Hora de verano romance)}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我该如何解决?感谢名单.

Mag*_*gus 16

momentjs的私有变量并不那么简单.

_i只是用于实现momentjs对象的字符串.它不是日期的当前值.

var date = "2015-10-19";
var now = moment(date);
var oneWeekAgo = moment(date).subtract(7, 'days');

// 2015 10 19
console.log(now.format('YYYY MM DD'));

// 2015 10 12
console.log(oneWeekAgo.format('YYYY MM DD'));
Run Code Online (Sandbox Code Playgroud)