代码之家  ›  专栏  ›  技术社区  ›  Sachin Shah

如何利用时刻获取最近3周的日期范围?

  •  0
  • Sachin Shah  · 技术社区  · 6 年前

    例:今天的日期是:2018年8月31日

    输出为:

    Aug 26 - Sep 01 , Aug 19 - Aug 25 , Aug 12 - Aug 18

    2 回复  |  直到 6 年前
        1
  •  4
  •   Dom    6 年前

    你可以使用 .startOf('week') .

    var currentWeek = getWeekRange(0);
    var lastWeek = getWeekRange(-1);
    var weekBeforeLast = getWeekRange(-2);
    
    var currentWeek2 = getWeekRange2(0);
    
    console.log(currentWeek, lastWeek, weekBeforeLast, currentWeek2);
    
    function getWeekRange(week = 0) {
      var weekStart = moment().add(week, 'weeks').startOf('week');
      
      return [...Array(7)].map((_, i) => 
        weekStart.clone().add(i, 'day').format('DD/MM/YYYY')
      );
    }
    
    function getWeekRange2(week = 0) {
     var weekStart = moment().add(week, 'weeks').startOf('week');
     var days = [];
     for (var i = 0; i < 7; i++) {
       days.push(weekStart.clone().add(i, 'day').format('DD/MM/YYYY'));
     }
     return days;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.js"></script>

    澄清:

    [...Array(7)] Array undefined 项目,即。 [undefined, undefined, ...] .map() .

    未定义 ,我使用项目的 index 在数组中增加星期几--换句话说,数组的第一项, [undefined] ,将有一个 属于 0 ,所以我们要加上 0 天,并添加到一周结束。

    你也可以这样做:

    function getWeekRange(week = 0) {
      var weekStart = moment().add(week, 'weeks').startOf('week');
      var days = [];
      for (var i = 0; i < 7; i++) {
        days.push(weekStart.clone().add(i, 'day').format('DD/MM/YYYY'));
      }
      return days;
    }
    
        2
  •  0
  •   KoboldMines    6 年前

    试试这个

    moment().range(moment().subtract(3, 'weeks'), moment());
    
    moment().subtract(3, 'weeks') this line will return the time before 3 weeks, moment() will return time now and range() will take the range from those two.
    

        3
  •  0
  •   Amit Kumar    6 年前
     let startOfWeek = moment().subtract(1, 'weeks').startOf('week').toDate().toISOString();
     let endOfWeek = moment().subtract(1, 'weeks').endOf('week').toDate().toISOString();
     console.log(startOfWeek, endOfWeek)