【问题标题】:Get same weekend last year using moment js使用 moment js 获得去年同一个周末
【发布时间】:2016-09-13 06:09:27
【问题描述】:

我试图在上周获得一年中的同一天,以便比较一些分析。

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

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 周星期日

知道怎么做吗?

【问题讨论】:

    标签: javascript date momentjs


    【解决方案1】:
    // Typescript
    
    var lastYear: moment.Moment = moment().subtract(1, "year");
    

    【讨论】:

    • 虽然此代码可以回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期价值。
    • @robdy 最后一年了。
    【解决方案2】:

    这是我想出的:

    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)。

    【讨论】:

    • 对于某些极端情况,这个答案似乎失败了,例如“2020-12-31”映射到“2020-12-31”。我认为如果你使用 .isoWeekYear(today.isoWeekYear() - 1) 而不是减去一年,它会起作用
    【解决方案3】:

    截至2.0.0moment.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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 2015-08-24
      • 1970-01-01
      • 2021-02-16
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多