将日期历史转换为 Javascript 中的日期范围

Convert history of dates into date ranges in Javascript

在我的应用程序中,我有一个 mysql table,我在其中维护了价格变更的历史记录。我将日期从历史 table 中映射出来,它看起来像这样:

['09-16-2019','09-25-2019','10-10-2019',...n]

使用此历史记录,我想创建一个日期范围数组,以便我可以轻松找出我的应用程序中的哪个客户端在哪个日期范围内注册。我想要的格式如下:

let ranges = [ 
        {start:'09-16-2019',end:'09-24-2019'},
        {start:'09-25-2019',end:'10-09-2019'}
        .,
        .,
        ..n
      ]

您可以使用简单的 Array.prototype.reduce() 从给定的 dates 数组创建对象,如下所示:

let dates = ['09-16-2019', '09-25-2019', '10-10-2019', '18-10-2019'];

let ranges = dates.reduce((acc, val, i, arr) => {
  if (i !== 0) acc.push({
    start: arr[i - 1],
    end: val
  });
  return acc;
}, []);

console.log(ranges);

假设根据您的示例,您拥有的是开始日期列表,您可以迭代并计算出结束日期。

let x = ['09-16-2019','09-25-2019','10-10-2019']
let res = [];
for(let i = 0; i < x.length - 1; i++) {
    let start = x[i];
    let end = new Date(Date.parse(x[i+1]) - 86400000).toLocaleDateString("en",{year:"numeric",month:"numeric",day:"numeric"});
    res.push({start, end})
}

console.log(res); 
// [ { start: '09-16-2019', end: '9/24/2019' },  
// { start: '09-25-2019', end: '10/9/2019' } ]