You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Javascript拆分起止日期区间数据生成每日对应条目?

JavaScript 按起止日期拆分数据实现方案

没问题,这就给你搞定这个日期拆分的需求!核心思路就是先生成start_date到end_date之间的所有日期,然后把原数据里的日期相关字段替换成单个的date,其他字段原样保留就行。

实现步骤&代码示例

我写了个完整的可运行函数,注释都标清楚了:

// 输入的原始数据
const originalData = { 
  eid: "9", 
  end_date: "2018-01-14", 
  event: true, 
  mname: "test event2", 
  start_date: "2018-01-12", 
  user_type: "1" 
};

// 生成起止日期之间的所有日期数组
function getDateRange(startDateStr, endDateStr) {
  const dates = [];
  const startDate = new Date(startDateStr);
  const endDate = new Date(endDateStr);
  
  // 循环生成每天的日期,直到超过结束日期
  let currentDate = new Date(startDate);
  while (currentDate <= endDate) {
    // 转成YYYY-MM-DD格式的字符串
    const dateStr = currentDate.toISOString().split('T')[0];
    dates.push(dateStr);
    // 日期加一天
    currentDate.setDate(currentDate.getDate() + 1);
  }
  return dates;
}

// 拆分数据的主函数
function splitDataByDate(original) {
  const { start_date, end_date, ...rest } = original;
  const dateRange = getDateRange(start_date, end_date);
  
  // 遍历日期数组,生成每个日期对应的对象
  return dateRange.map(date => ({
    ...rest,
    date: date
  }));
}

// 执行拆分并输出结果
const splitResult = splitDataByDate(originalData);
console.log(splitResult);

输出效果

运行上面的代码后,splitResult就是你想要的格式:

[
  { eid: "9", event: true, mname: "test event2", user_type: "1", date: "2018-01-12" },
  { eid: "9", event: true, mname: "test event2", user_type: "1", date: "2018-01-13" },
  { eid: "9", event: true, mname: "test event2", user_type: "1", date: "2018-01-14" }
]

这个方法兼容性很好,不管起止日期间隔多少天都能处理,而且字段是动态保留的,要是原数据以后加了新字段,代码也不用改~

内容的提问来源于stack exchange,提问作者user5443928

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:48:30