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

时间:2019-10-14 07:16:13

标签: javascript date-range

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

['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
      ]

2 个答案:

答案 0 :(得分:0)

您可以使用简单的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);

答案 1 :(得分:0)

根据您的示例,您可以看到开始日期列表,您可以迭代并确定结束日期。

;WIth CTE as (SELECT SQL_CALC_FOUND_ROWS
       `ing_id`, 
       `ing_cas_no`,
       `ing_cosing_ref_no`, 
       REPLACE(aig_addi_all_cosing, ',',"%' OR usf_eu_cosing_id LIKE '%") AS TEST,
       (SELECT COUNT(usf_id) 
        FROM `tbl_USFDA_published` 
        WHERE (usf_eu_cosing_id LIKE TEST)) AS USFDAREG 
FROM `tbl_ingredients` as aa 
LEFT JOIN tbl_ing_addi_cosing_ref as bb on aa.ing_id=bb.aig_ing_id
WHERE ing_cosing_ref_no='38617')
select * from CTE
where TEST like  '38617%'