【问题标题】:Get same day of same week获得同一周的同一天
【发布时间】:2020-03-09 12:51:35
【问题描述】:

我正在使用时刻 JS,我想获得去年同一周的同一天。

我们在本月的第三周,星期一。第三周,因为第一周从星期日开始01/03/2020。在那一周,我们只有一个月匹配的一天。

我想要第三周,去年的星期一。

我尝试这样做,但它返回的是 04/03/2019 而不是 11/03/2019。知道如何解决这个问题吗?还有为什么我的代码会有这种行为?

console.log(moment().subtract(1, 'years').day(moment().day()).format('DD/MM/YYYY'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" integrity="sha256-4iQZ6BVL4qNKlQ27TExEhBN1HFPvAvAMbFavKKosSWQ=" crossorigin="anonymous"></script>

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    您应该首先找到它当前是一年中的哪一天,然后减去一年并将天数加回:

    const currentDay = moment().dayOfYear()
    const thisDayLastYear = moment()
      .subtract(1, 'year')     // go back one year
      .startOf('year')         // start at the beginning
      .add(currentDay, 'days') // add the days back in
      .format('DD/MM/YYYY')
    
    console.log(thisDayLastYear)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" integrity="sha256-4iQZ6BVL4qNKlQ27TExEhBN1HFPvAvAMbFavKKosSWQ=" crossorigin="anonymous"></script>

    【讨论】:

      【解决方案2】:

      您在减法中使用年份,而是使用 52 周:

      编辑:

      console.log(moment().subtract(52, 'weeks').format('DD/MM/YYYY'));
      

      您可以尝试使用不同的日期,例如:

      moment("20200311","YYYYMMDD").subtract(52, 'weeks').format('DD/MM/YYYY'); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-24
        • 1970-01-01
        • 1970-01-01
        • 2022-07-21
        • 1970-01-01
        • 2012-12-01
        • 1970-01-01
        相关资源
        最近更新 更多