将结束日期设置为最多31天

时间:2018-04-18 08:15:50

标签: javascript typescript

我正在尝试从给定的Start DateEnd Date提取周数。

如果日期范围超过31天,我需要将endDate限制为最多31天。

示例:

Start date : 1st May 2018
default end date: 30th June 2018
New endDate should be: 31st May 2018

以下是我提取周数的代码

weekByDates() {
  let dates = JSON.parse(localStorage.getItem('pfsessionFilter'));
let stDate = moment((dates[0].value)).format('YYYY-MM-DD');
let eDate = moment((dates[1].value)).format('YYYY-MM-DD');

let startDate = moment(stDate);
let endDate = moment(eDate);
let weekData = [];
if(endDate.diff(startDate, 'days')>31)
endDate = moment(startDate.add(31, 'days')); 
while(startDate.isSameOrBefore(endDate)) {
    if(weekData.length > 0) {
        // Update end date
        let lastObj = weekData[weekData.length - 1];
        lastObj['endDate'] =  moment(startDate).format('MM/DD');
        lastObj['label'] = `${lastObj.startDate} - ${lastObj['endDate']} (week${weekData.length})`
        startDate.add(1, 'days');
    }
    weekData.push({startDate: moment(startDate).format('MM/DD')});
    startDate.add(6, 'days');
}
if(startDate.isAfter(endDate)) {
    // Update last object
    let lastObj = weekData[weekData.length - 1];
    lastObj['endDate'] =  moment(endDate).format('MM/DD');
    lastObj['label'] = `${lastObj.startDate} - ${lastObj['endDate']} (week${weekData.length})`
}
console.log(weekData)
return weekData;
}

请帮助您了解如何将endDate限制为从开始日期算起的31天?

https://plnkr.co/edit/6rU39T0vIPVQkFnydKbC?p=preview

3 个答案:

答案 0 :(得分:1)

检查范围是否大于31天,而不是使用添加方法

weekByDates() 
{ 
  let dates = JSON.parse(localStorage.getItem('getDates')); 
  let stDate = moment((dates[0].value)).format('YYYY-MM-DD'); 
  let eDate = moment((dates[1].value)).format('YYYY-MM-DD'); 
  let startDate = moment(stDate); 
  let endDate = moment(eDate); 
  if(eDate.diff(stDate, 'days')>31)
    endDate = moment(stDate).add(31, 'days'); 
  let weekData = [];      while(startDate.isSameOrBefore(endDate)) 
{ .... }

答案 1 :(得分:-1)

您可以使用add()函数

来限制天数
weekByDates() {
  let dates = JSON.parse(localStorage.getItem('getDates'));
  let stDate = moment((dates[0].value)).format('YYYY-MM-DD');
  let eDate = moment((dates[1].value)).format('YYYY-MM-DD');

  let startDate = moment(stDate);
  let endDate = moment(stDate.add(31, 'days'));
  let weekData = [];
  while(startDate.isSameOrBefore(endDate)) {
    ....
}

希望它能帮助你。

答案 2 :(得分:-1)

我用这个判断

if(endDate.diff(startDate, 'days') > 31){
//More than 31 days
}