使用moment.js从2017年到现在生成一系列星期

时间:2018-02-06 06:16:12

标签: javascript momentjs

我需要列出从2017年到现在的周数组。我的星期从星期一开始,到星期日结束,我试着在moment.js,

const startDate = moment().isoWeekday('Monday').format('DD-MM-YYYY');
const endDate = moment().isoWeekday('Sunday').format('DD-MM-YYYY');

我试图想要获得周开始日期和结束日期,但我不知道下一步的过程。

注意我的数组列表以["02-01-2017", "08-01-2017"]开头,以当前周结束将是最后一周。

const result = [["02-01-2017", "08-01-2017"],...... ["05-01-2018", "11-01-2018"]]

2 个答案:

答案 0 :(得分:4)

您可以将开始日期初始化为2017年1月1日的第1个工作日,并迭代到比今天更少的所有日期,并继续在数组中添加天数。

var weeks = [];
var startDate = moment(new Date(2017,0,1)).isoWeekday(8);
if(startDate.date() == 8) {
    startDate = startDate.isoWeekday(-6)
}
var today = moment().isoWeekday('Sunday');
while(startDate.isBefore(today)) {
  let startDateWeek = startDate.isoWeekday('Monday').format('DD-MM-YYYY');
  let endDateWeek = startDate.isoWeekday('Sunday').format('DD-MM-YYYY');
  startDate.add(7,'days');
  weeks.push([startDateWeek,endDateWeek]);
}
console.log(weeks)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

答案 1 :(得分:1)

这样的事情有帮助吗?

let startDate = moment('2017-01-01').startOf('week').format('YYYY-MM-DD');
let endDate = moment(new Date()).startOf('week').format('YYYY-MM-DD');

const weeks = [];
while (startDate <= endDate) {
  weeks.push(startDate);
  startDate = moment(startDate).add(7, 'days').format('YYYY-MM-DD');
}

console.log('weeks:', weeks);