Javascript:使用 moment 库从字符串日期中减去月份

Javascript: Subtract months from a string date using moment library

无法使用 moment 库从字符串日期中减去月份

var str = '2015-10-30'; // date in the string format
var dateMoment = moment(str)
var result = moment(dateMoment).subtract(12, 'months');
console.log('old date = ', dateMoment)
console.log('new date = ', result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

你能签入 jsfiddle: jsfiddle.net/eshwar70/5f10puqa/9 ;它没有按预期工作。打开开发者工具并检查。我正在检查我的浏览器,它没有按预期工作。 –

解决方案:

在函数末尾添加.format(); var result = moment(dateMoment).subtract(12, 'months').format();

但是您的代码运行完美:

结果减少了一年,因为你减去 12 个月(1 年)。所以 2015-10-30(减去 12 个月)= 2014-10-30

你需要去官方文档了解他们的内部系统是如何工作的。这是解释为什么您的代码未显示预期值的官方文档。基本上,它是说 moment 对象是可变的。因此,如果您从原始日期中减去,您实际上也在更改原始日期。减去之后仔细看内部结构,你会看到_d的值居然变了,用format().

可以看到结果

var str = '2015-10-30';
var dateMoment = moment(str);
var result = dateMoment.clone().subtract(12, 'months').format();
console.log('old date = ', dateMoment.format())
console.log('new date = ', result)
<script src="https://momentjs.com/downloads/moment.min.js"></script>

Moment Documentation