如何使用Moment.js从当前日期减去7天

76
我想使用moment.js库从当前日期减去7天,以获取格式化日期YYYY-MM-DD。
我尝试了以下方法:

dateTo = moment(new Date()).format('YYYY-MM-DD');
dateFrom = moment(new Date() - 7).format('YYYY-MM-DD');

console.log(dateFrom);
console.log(dateTo);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>

但是所有返回的值都是相同的。

6个回答

170

可能是:

dateTo = moment().format('YYYY-MM-DD');
dateFrom = moment().subtract(7,'d').format('YYYY-MM-DD');

moment#subtract


12
值得注意的是,moment(new Date()) === moment() - Timespace
很棒,但我如何获取从日期参数中传递的日期(换句话说,当前日期不是今天)? - Hungnn

6

你可以使用以下方法:

moment().subtract(1,'w')

从当前日期减去一周(7天)。

NOTE:
1. w for week
2. d for days
3. M for month
4. y for year

1
请注意,根据文档,应该使用'M'表示月份,而'm'表示分钟。参考:https://momentjs.com/docs/#/manipulating/add/ - Tyson Z
1
不错的发现 @TysonZ - Samuel Chibuike

6
日期对象,当进行类型转换时,单位是毫秒。因此:
dateFrom = moment(Date.now() - 7 * 24 * 3600 * 1000).format('YYYY-MM-DD'); 

如果我想传递类似于dateTo - dateFrom这样的东西怎么办? - redrom
1
这种方法在接近夏令时转换的日期上并不安全。并非所有的日子都是24小时长。 - Matt Johnson-Pint

2
为了使用日期选择器,我会使用以下代码:
 first_day: moment()
    .subtract(5, "day")
    .endOf("day")
    .toDate(),
  last_day: moment()
    .endOf("day")
    .toDate(),

2

这个问题已经过时了,所以解决方案也需要更新。

使用 Moment v2.29 +

您可以使用以下方法添加或减去天数:

moment().day(-7); // last Sunday (0 - 7)
moment().day(0); // this Sunday (0)
moment().day(7); // next Sunday (0 + 7)
moment().day(10); // next Wednesday (3 + 7)
moment().day(24); // 3 Wednesdays from now (3 + 7 + 7 + 7)

请参考官方文档了解更多信息:https://momentjs.com/docs/#/get-set/

0

获取最近7天的最简单方法

moment().subtract(7, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss')

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