javascript - How to get last 3 weeks date range using moment ?
问题描述
I need date range of last 3 weeks including current week date range.
Ex: today's date is : 31/08/2018
output will be :
Aug 26 - Sep 01 ,
Aug 19 - Aug 25 ,
Aug 12 - Aug 18
解决方案
您可以使用 找到一周的开始时间.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
包含 7个项目的undefined
项目,即[undefined, undefined, ...]
. 这些项目被视为占位符,并将使用.map()
.
尽管如此undefined
,我还是使用index
数组中的项目来增加星期几——换句话说,数组的第一项,[undefined]
,将有一个index
of 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;
}
推荐阅读
- angular - 业力单元测试:角度类型安全间谍无法按预期工作
- python - 根据python中的字符串匹配列名?
- npm - Big Sur 11.2 升级后“npm doctor”的权限错误
- javascript - 如果宽度溢出容器,则将列包装在表格中
- r - ggplotly 扭曲标记大小和线条粗细,忽略 hjust/vjust
- javascript - Angular mat-table:每条记录多行,带有排序选项
- elasticsearch - Elastic Watcher 不返回结果
- android - vanniktech 的表情符号弹出窗口未显示
- javascript - powershell用php元素编写html
- java - 向类传递参数spring批处理作业时找不到或加载主类