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

如何用JavaScript获取两个日期之间的具体月份?

获取两个日期之间的具体月份数组

实现思路

  1. 将输入的mm/dd/yyyy格式日期字符串转换为JavaScript的Date对象,注意JS中月份是0索引(0代表1月,11代表12月)。
  2. 明确起始年月与结束年月,确保起始日期不晚于结束日期(若输入顺序颠倒则交换)。
  3. 循环遍历从起始年月到结束年月的所有月份,收集每个月份的全称。
  4. 利用Intl.DateTimeFormat获取本地化的月份名称,支持多语言切换。

代码实现

function getMonthsBetweenDates(dateStr1, dateStr2) {
    // 解析mm/dd/yyyy格式的日期字符串,返回{year, month}(month为0-11)
    const parseDate = (dateStr) => {
        const [mm, dd, yyyy] = dateStr.split('/').map(Number);
        return { year: yyyy, month: mm - 1 };
    };

    let start = parseDate(dateStr1);
    let end = parseDate(dateStr2);

    // 如果起始日期晚于结束日期,交换两者
    if (start.year > end.year || (start.year === end.year && start.month > end.month)) {
        [start, end] = [end, start];
    }

    const months = [];
    const formatter = new Intl.DateTimeFormat('en-US', { month: 'long' });

    let currentYear = start.year;
    let currentMonth = start.month;

    // 循环收集所有月份
    while (currentYear < end.year || (currentYear === end.year && currentMonth <= end.month)) {
        const date = new Date(currentYear, currentMonth, 1);
        months.push(formatter.format(date));
        
        currentMonth++;
        if (currentMonth > 11) {
            currentMonth = 0;
            currentYear++;
        }
    }

    return months;
}

// 测试示例
const date1 = '11/01/2022';
const date2 = '02/20/2023';
console.log(getMonthsBetweenDates(date1, date2));
// 输出: ["November", "December", "January", "February"]

代码说明

  • parseDate函数负责拆分日期字符串,转换为便于处理的年月对象,同时修正JS月份的索引问题。
  • 加入日期顺序校验,避免因输入起始日期晚于结束日期导致的错误。
  • 使用Intl.DateTimeFormat生成月份全称,若需要中文月份,只需将'en-US'改为'zh-CN'即可。
  • 循环逻辑通过递增月份并处理跨年情况,确保遍历所有目标月份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:50:25