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

标签 javascript typescript

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

如果日期范围超过 31 天,我需要将结束日期限制为最多 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;
}

请帮忙说明如何将结束日期限制为从开始日期算起的 31 天?

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

最佳答案

检查范围是否大于 31 天,然后使用 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(eDate); 
  if(eDate.diff(stDate, 'days')>31)
    endDate = moment(stDate).add(31, 'days'); 
  let weekData = [];      while(startDate.isSameOrBefore(endDate)) 
{ .... }

关于javascript - 将结束日期设置为最多 31 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49894557/

相关文章:

javascript - 当数组中的函数之一不返回 Promise 时,我可以使用 $q.all 吗?

javascript - 如何在 TypeScript 中将项目推送到 [string]

visual-studio - 环境上下文中不允许使用初始化程序

javascript - 使用带有正则表达式的 split 方法后数组中的空字符串

javascript - $ ("#id").val() 与 document.getElementById ("id").value 的工作方式不同

php - 原型(prototype)和显示 :none

http - Angular2 @TypeScript 可观察到的错误

typescript - 链接 Observable 时的 RxJs 楼梯

如果使用 object.value 而不是 object,Angular 递归模板列表将变成无限递归

javascript - 检查是否至少有一个输入字段在 jQuery 中被填充