Javascript 从日期范围获得周数
我需要根据给定的日期范围提取周数 下面是我的代码,它将返回第个星期Javascript 从日期范围获得周数,javascript,Javascript,我需要根据给定的日期范围提取周数 下面是我的代码,它将返回第个星期 WeekByDates() { let stDate = moment((dates[0].value)).format('YYYY-MM-DD'); //2018-06-01 let eDate = moment((dates[1].value)).format('YYYY-MM-DD');//2018-06-14 let startDate = moment(stDate); let end
WeekByDates() {
let stDate = moment((dates[0].value)).format('YYYY-MM-DD'); //2018-06-01
let eDate = moment((dates[1].value)).format('YYYY-MM-DD');//2018-06-14
let startDate = moment(stDate);
let endDate = moment(eDate);
let weekData = [];
while (startDate.isSameOrBefore(endDate)) {
if (weekData.length > 0) {
// Update end date
let lastObj = weekData[weekData.length - 1];
lastObj['endDate'] = moment(startDate).format('YYYY-MM-DD');
lastObj['label'] = `${moment(lastObj.startDate).format('MM/DD')} - ${moment(lastObj['endDate']).format('MM/DD')}`
startDate.add(1, 'days');
}
weekData.push({ startDate: moment(startDate).format('YYYY-MM-DD') });
startDate.add(6, 'days');
}
if (startDate.isAfter(endDate)) {
// Update last object
let lastObj = weekData[weekData.length - 1];
lastObj['endDate'] = moment(endDate).format('YYYY-MM-DD');
lastObj['label'] = `${moment(lastObj.startDate).format('MM/DD')} - ${moment(lastObj['endDate']).format('MM/DD')}`
}
console.log(weekData)
return weekData;
}
预计的周数应为
06/01 - 06/07
06/08 - 06/14
但实际上它回来了
06/01 - 06/07
06/08 - 06/14
06/15 - 06/14
不知道我做错了什么。请帮助在将值推送到
weekdata
之前,您还需要添加以下检查
while (startDate.isSameOrBefore(endDate)) {
if (weekData.length > 0) {
// Update end date
let lastObj = weekData[weekData.length - 1];
lastObj['endDate'] = moment(startDate).format('YYYY-MM-DD');
lastObj['label'] = `${moment(lastObj.startDate).format('MM/DD')} - ${moment(lastObj['endDate']).format('MM/DD')}`
startDate.add(1, 'days');
}
if (startDate.isAfter(endDate)) { //check before pushing
weekData.push({ startDate: moment(startDate).format('YYYY-MM-DD') });
startDate.add(6, 'days');
}
}
您还需要检查何时推送到数组
if(瞬间(开始日期).issameorfore(结束日期))
函数WeekByDates(){
设stDate=moment('2018-06-01')。格式('YYYY-MM-DD');
设eDate=力矩('2018-06-14')。格式('YYYY-MM-DD');
让startDate=力矩(stDate);
设endDate=力矩(eDate);
让weekData=[];
while(开始日期Issame或之前(结束日期)){
如果(weekData.length>0){
//更新结束日期
设lastObj=weekData[weekData.length-1];
lastObj['endDate']=时刻(开始日期)。格式('YYYY-MM-DD');
lastObj['label']=`${moment(lastObj.startDate).format('MM/DD')}-${moment(lastObj['endDate'])。format('MM/DD')}`
添加(1,‘天’);
}
if(时刻(开始日期)。IsSame或之前(结束日期))
推送({startDate:moment(startDate).format('yyyyy-MM-DD')});
开始日期。添加(6,‘天’);
}
if(开始日期:isAfter(结束日期)){
//更新最后一个对象
设lastObj=weekData[weekData.length-1];
lastObj['endDate']=时刻(endDate).format('YYYY-MM-DD');
lastObj['label']=`${moment(lastObj.startDate).format('MM/DD')}-${moment(lastObj.endDate).format('MM/DD')}`
}
console.log(工作日数据)
返回工作日数据;
}
WeekByDates()代码>
这个函数应该做什么?只需计算周数(2)或返回分手(2018-06-01至07,2018-06-08至14)?