如何使用moment.js减去一个月?

104

我有一个使用moment().format('MMM YYYY')生成的当前月份。我需要使用此当前月份获取最近的六个月。

如何使用moment.js减去一个月?


他们在文档中隐藏了那种信息(http://momentjs.com/docs/#/manipulating/subtract/)。 - Jamiec
7
阅读文档 moment().subtract(1, 'month'); - Satpal
@Satpal但是这个不起作用moment("2017-12-01").subtract(1,'months'); - shinzou
1个回答

225

在 moment.js 中进行减法操作:

moment().subtract(1, 'months').format('MMM YYYY');

文档:

http://momentjs.com/docs/#/manipulating/subtract/

在2.8.0版本之前,也支持moment#subtract(String, Number)语法。它已被弃用,推荐使用moment#subtract(Number, String)。

  moment().subtract('seconds', 1); // Deprecated in 2.8.0
  moment().subtract(1, 'seconds');
从2.12.0版本开始,如果传入的天数和月份数值为小数,则将其四舍五入为最接近的整数。周、季度和年将转换为天数或月份,然后四舍五入为最接近的整数。
  moment().subtract(1.5, 'months') == moment().subtract(2, 'months')
  moment().subtract(.7, 'years') == moment().subtract(8, 'months') //.7*12 = 8.4, rounded to 8

1
但是这个不起作用 moment("2017-12-01").subtract(1, 'months'); - shinzou
@shinzou 你使用的 MomentJs 版本是哪个?我尝试了一下,没有遇到任何问题:http://jsfiddle.net/kzo3e3bs/4/ - Dipiks
1
这个不行:moment("2017-12-01").subtract(1, 'months'); 但是这个可以:moment("2017-12-01").subtract(1, 'months').format('MMMM DD h:mm A'); 为什么需要格式化? - shinzou
1
它也可以在没有任何“_format()_”的情况下正常工作:http://jsfiddle.net/kzo3e3bs/7/ - Dipiks
@shinzou 当你打印变量时,首先查看momentjs对象的__d_属性。对于第二个屏幕,当你使用开发者工具时:_format()_返回一个字符串,而没有格式化,你只是返回一个_momentjs_对象,但_substract_函数仍然有效(再次查看__d_属性)。 - Dipiks
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接