简体   繁体   English

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

[英]How to get last 3 weeks date range using moment ?

I need date range of last 3 weeks including current week date range. 我需要最近3周的日期范围,包括当前星期的日期范围。

Ex: today's date is : 31/08/2018 例如:今天的日期是:31/08/2018

output will be : 输出将是:

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

You can find the start of the week using .startOf('week') . 您可以使用.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> 


For clarification: 为了澄清:

[...Array(7)] was used for brevity. 为了简洁起见,使用[...Array(7)] It's creating an Array with 7 undefined items, ie [undefined, undefined, ...] . 它正在创建一个包含7个undefined项的Array ,即[undefined, undefined, ...] These items are treated as placeholder and will be mapped out into the days of the week using .map() . 这些项目被视为占位符,并将使用.map()映射到星期几。

Despite being undefined , I use the item's index within the array to increment the day of the week -- in other words, the first item of the array, [undefined] , would have an index of 0 , so we would add 0 days, and add until the end of the week. 尽管undefined ,但我还是使用数组中项目的index来增加星期几-换句话说,数组的第一项[undefined]index0 ,所以我们将添加0天,并添加到一周结束。

You could also do something like: 您还可以执行以下操作:

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;
}

Try this 尝试这个

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.

Hope it helps :) 希望能帮助到你 :)

 let startOfWeek = moment().subtract(1, 'weeks').startOf('week').toDate().toISOString();
 let endOfWeek = moment().subtract(1, 'weeks').endOf('week').toDate().toISOString();
 console.log(startOfWeek, endOfWeek)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM