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

JS中为日期对象数组的每个元素生成日期范围的实现方案

解决方案:生成日期范围数组

核心思路

遍历日期数组,对每个元素按规则生成起止范围:

  • 非最后一个元素:结束日期为下一个元素的前一天
  • 最后一个元素:结束日期为当前日期加7天
    通过日期处理工具函数保证输出格式统一,最终拼接成指定格式的范围字符串。

代码实现

日期处理工具函数

// 将Date对象格式化为'YYYY-MM-DD HH:mm:ss'字符串
function formatDate(date) {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  return `${year}-${month}-${day} 00:00:00`;
}

// 获取指定日期的前一天(00:00:00)
function getPreviousDay(dateStr) {
  const date = new Date(dateStr);
  date.setDate(date.getDate() - 1);
  return formatDate(date);
}

// 获取指定日期加7天后的日期(00:00:00)
function addSevenDays(dateStr) {
  const date = new Date(dateStr);
  date.setDate(date.getDate() + 7);
  return formatDate(date);
}

生成日期范围数组

const objArr = [
  '2022-10-17 00:00:00',
  '2022-10-24 00:00:00',
  '2022-11-07 00:00:00',
  '2022-11-14 00:00:00'
];

// 处理空数组边界情况
if (objArr.length === 0) {
  console.log('日期数组不能为空');
}

const dateRangeArr = objArr.map((startDate, index) => {
  let endDate;
  if (index === objArr.length - 1) {
    endDate = addSevenDays(startDate);
  } else {
    endDate = getPreviousDay(objArr[index + 1]);
  }
  return `${startDate}-${endDate}`;
});

console.log(dateRangeArr);

输出结果

运行后将得到你需要的日期范围数组:

[
  '2022-10-17 00:00:00-2022-10-23 00:00:00',
  '2022-10-24 00:00:00-2022-11-06 00:00:00',
  '2022-11-07 00:00:00-2022-11-13 00:00:00',
  '2022-11-14 00:00:00-2022-11-20 00:00:00'
]

扩展适配月/年维度

如果后续要支持月、年维度筛选,只需替换对应的日期计算逻辑:

  • 月维度:将getPreviousDay替换为获取当月最后一天,addSevenDays替换为加1个月
  • 年维度:将getPreviousDay替换为获取当年最后一天,addSevenDays替换为加1年

示例月维度工具函数:

// 获取指定日期所在月的最后一天
function getLastDayOfMonth(dateStr) {
  const date = new Date(dateStr);
  const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
  return formatDate(lastDay);
}

// 给指定日期加1个月
function addOneMonth(dateStr) {
  const date = new Date(dateStr);
  date.setMonth(date.getMonth() + 1);
  return formatDate(date);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:55:23