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

如何基于可变起止日期生成指定间隔天数的日期对二维数组?

生成指定间隔的日期对二维数组

需求明确

  • 日期格式固定为 MM/DD/YYYY
  • 支持自定义起始日期、起始日期后n天作为结束日期
  • 生成二维数组,每个元素是一组日期对:
    • 每组内两个日期默认间隔指定天数
    • 最后一组若无法达到指定间隔,自动缩短为到结束日期的天数
    • 所有日期必须成对出现,不能有单独日期遗留

示例效果

当起始日期为 12/01/2022、结束日期为 12/20/2022(即起始日期后19天)、间隔天数为2时,输出如下:

[
    ['12/01/2022', '12/03/2022'],
    ['12/04/2022', '12/06/2022'],
    ['12/07/2022', '12/09/2022'],
    ['12/10/2022', '12/12/2022'],
    ['12/13/2022', '12/15/2022'],
    ['12/16/2022', '12/18/2022'],
    ['12/19/2022', '12/20/2022']
]

优化实现代码

原代码存在硬编码间隔、逻辑拆分冗余的问题,以下是更灵活的实现:

// 给Date对象扩展安全的加天数方法,不修改原日期
Date.prototype.addDays = function (days) {
    const newDate = new Date(this.valueOf());
    newDate.setDate(newDate.getDate() + days);
    return newDate;
};

// 统一格式化日期为MM/DD/YYYY
function formatDate(date) {
    return new Intl.DateTimeFormat('en-US', {
        year: 'numeric',
        month: '2-digit',
        day: '2-digit'
    }).format(date);
}

// 核心生成函数:起始日期、日期对间隔天数、起始后总天数
function generateDatePairs(startDate, intervalDays, totalDays) {
    const endDate = startDate.addDays(totalDays);
    const datePairs = [];
    let currentStart = startDate;

    while (currentStart <= endDate) {
        // 计算当前组的结束日期
        let currentEnd = currentStart.addDays(intervalDays);
        // 若超过总结束日期,直接用总结束日期
        if (currentEnd > endDate) {
            currentEnd = endDate;
        }
        // 添加日期对
        datePairs.push([formatDate(currentStart), formatDate(currentEnd)]);
        // 下一组起始日期为当前结束日期+1天,避免重叠
        currentStart = currentEnd.addDays(1);
    }

    return datePairs;
}

// 使用示例
const startDate = new Date('2022-12-01');
// 间隔2天,起始日期后19天(到12/20/2022)
const result = generateDatePairs(startDate, 2, 19);
console.log(result);

代码说明

  • addDays:通过复制原日期对象实现安全的天数增加,避免污染原日期
  • formatDate:用Intl.DateTimeFormat确保跨环境的MM/DD/YYYY格式输出
  • generateDatePairs:
    • 接收三个核心参数,完全满足需求中的可变配置
    • 循环中自动处理最后一组的间隔截断
    • 直接生成二维数组,无需额外拆分步骤,逻辑更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:00:47