去年同一个周末使用时刻js

时间:2016-09-13 06:09:27

标签: javascript date momentjs

我正试图在上周获得同一天,所以我可以比较一些分析。

使用时刻我可以轻松地做到这一点

var today = new Date(); 
//Sunday 4 September 2016 - Week 36

var lastYear = new moment(today).subtract(12, 'months').toDate();
//Friday 4 September 2015 - Week 37

我想要做的是去年同样的'星期日',所以星期日在2015年第36周

知道怎么做吗?

3 个答案:

答案 0 :(得分:9)

这是我想出的:

let today    = moment();
let lastYear = moment().subtract(1, 'year')
                       .isoWeek(today.isoWeek())
                       .isoWeekday(today.isoWeekday());

以今天为起点,减去一年,并将周和工作日设置为今天的工作日。

所以今天(2016年9月13日星期二,又名2016-W37-2)去年是2015年9月8日星期二(又名2015-W37-2)。

答案 1 :(得分:0)

从版本2.0.0开始,moment.js支持.endOf('week')方法,请尝试

var lastYear = moment().subtract(1, 'years').endOf('week');

这将给你一个23:59:59的时间,所以你可能还想要.startOf('day')致电当天00:00:00:

var lastYear = moment().subtract(1, 'years').endOf('week').startOf('day');

根据您所在的地区,您的周可能是周一至周日或周日至周六,所以我猜您也必须考虑到这一点。

修改

我查了一下文档,看来你也可以用这种方式设置星期几:

moment().day(-7); // last Sunday (0 - 7)
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)

所以在你的情况下它将是

var lastYear = moment().day(-52 * 7); // a Sunday 52 weeks ago

或两种方法相结合

var lastYear = moment().subtract(1, 'years').day(7); // a Sunday after the date that was 1 year ago

答案 2 :(得分:0)

// Typescript

var lastYear: moment.Moment = moment().subtract(1, "year");