我需要列出从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"]]
答案 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);