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)?