Javascript 从日期集合中查找日期范围

Javascript 从日期集合中查找日期范围,javascript,angularjs,typescript,lodash,Javascript,Angularjs,Typescript,Lodash,我知道这与此类似,但我需要不同的结果和JavaScript 我有一系列这样的日期,可能不符合顺序。2017年3月27日、2017年3月28日、2017年3月29日、2017年4月4日、2017年4月5日、2017年4月6日、2017年4月12日、2017年4月13日、2017年4月14日、2017年5月2日 日期格式为mm/dd/yyyy 我需要将它拆分为一个日期数组,我可以这样做。但是我需要循环遍历所有日期,如果这些日期是连接的,那么它需要是一个日期范围。如果有一个单一的日期,那么它将是一个单

我知道这与此类似,但我需要不同的结果和JavaScript

我有一系列这样的日期,可能不符合顺序。2017年3月27日、2017年3月28日、2017年3月29日、2017年4月4日、2017年4月5日、2017年4月6日、2017年4月12日、2017年4月13日、2017年4月14日、2017年5月2日

日期格式为mm/dd/yyyy

我需要将它拆分为一个日期数组,我可以这样做。但是我需要循环遍历所有日期,如果这些日期是连接的,那么它需要是一个日期范围。如果有一个单一的日期,那么它将是一个单一的日期范围

所以我需要以上日期的结果

[
    {'start': 03/27/2017, 'end': 03/29/2017 }, 
    {'start': 04/04/2017, 'end': 04/06/2017}, 
    {'start': 04/12/2017, 'end': 04/14/2017 }, 
    {'start': 05/02/2017, 'end': 05/02/2017}
]
我正在用JavaScript、Typescript、lodash和angular 1.6编写这个应用程序

非常感谢您的帮助

编辑

我有一个弹出式日历,用户可以选择多个日期。如果日期是连续的,则为日期范围;如果是单个日期,则仅此一个日期为日期范围。用户需要选择所需的关闭日期,然后将这些日期插入数据库。

。我把它们转换成日期,然后进行数学计算,看看下一个日期是否大于一天。如果是,那么我停止当前日期范围,开始下一个日期范围

let string = '03/27/2017,03/28/2017,03/29/2017,04/04/2017,04/05/2017,04/06/2017,04/12/2017,04/13/2017,04/14/2017, 05/02/2017';
  //split them and pull out any white spaces from beginning and end
  let dates = string.split(',').map(s=>{
    s = s.trim();
    let nums = s.split('/');
    let d = new Date(nums[2], nums[0], nums[1]);
    return {date:d, string: s};
  });
  let currentStart = dates[0];
  let result = [];
  for(let i = 1; i < dates.length; i++){
    let {date, string} = dates[i];
    //If last date, add range
    if(i == dates.length -1){
      console.log("hello");
      result.push({start: currentStart.string ,end: string});
    } else {
      let prevDate = dates[i-1] || currentStart; //in case prevDate is undefined
      let nextDate = dates[i+1];
      let diff = nextDate.date.getTime() - date.getTime();
      if(diff > (24 * 60 * 60 * 1000)){
        result.push({start: currentStart.string ,end: string});
        currentStart = nextDate;
      }
    }
  }

  console.log(result, 'result');
let string='2017年3月27日,2017年3月28日,2017年3月29日,2017年4月4日,2017年4月5日,2017年4月6日,2017年4月12日,2017年4月13日,2017年4月14日,2017年5月2日';
//将它们分开,并从开头和结尾拉出所有空白
让dates=string.split(',').map(s=>{
s=s.修剪();
设nums=s.split('/');
设d=新日期(nums[2],nums[0],nums[1]);
返回{date:d,string:s};
});
让currentStart=日期[0];
让结果=[];
for(设i=1;i(24*60*60*1000)){
push({start:currentStart.string,end:string});
currentStart=nextDate;
}
}
}
console.log(result,'result');

Define“connected”看起来他指的是最近的连续日期,但这仍然不是一个好主意。@JoelCDoyle,是的,我指的是最近的连续日期。谢谢你的输入。你能帮我完成任务吗?我不知道如何使用您的解决方案并得到我需要的结果。我想。@ayordy67您还需要什么?