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

如何使用JavaScript日期函数获取当前日期的前序日期

如何用JavaScript获取指定日期的前序日期

完全可以通过JavaScript内置的Date对象实现这个需求,核心是利用Date的日期调整方法,再配合日期格式化逻辑即可。

实现思路与示例

  1. 解析目标日期:不管是当前日期还是指定日期(比如你示例中的06-07-2023),都需要先转换为Date实例。注意Date的月份是0-based(0代表1月,11代表12月),处理时要做对应转换。
  2. 调整日期:使用setDate()方法,通过减去对应天数得到前序日期。这个方法会自动处理跨月/跨年的边界情况(比如1月1日减1天会自动变为去年12月31日)。
  3. 格式化输出:将调整后的Date对象转换为DD-MM-YYYY格式的字符串,确保日、月始终是两位数字。

完整代码示例

// 生成指定日期的前n天日期数组,格式为DD-MM-YYYY
function getPreviousDates(targetDateStr, count) {
    // 拆分DD-MM-YYYY格式的日期字符串
    const [day, month, year] = targetDateStr.split('-');
    // 创建目标日期实例(月份减1适配Date的0-based规则)
    const targetDate = new Date(year, month - 1, day);
    const dates = [];

    for (let i = 1; i <= count; i++) {
        // 创建日期副本,避免修改原日期对象
        const prevDate = new Date(targetDate);
        prevDate.setDate(targetDate.getDate() - i);
        
        // 补零格式化日、月
        const formattedDay = String(prevDate.getDate()).padStart(2, '0');
        const formattedMonth = String(prevDate.getMonth() + 1).padStart(2, '0');
        const formattedYear = prevDate.getFullYear();
        
        dates.push(`${formattedDay}-${formattedMonth}-${formattedYear}`);
    }

    return dates;
}

// 使用示例:获取06-07-2023的前3天日期
const result = getPreviousDates('06-07-2023', 3);
console.log(result); // 输出: ["06-06-2023", "06-05-2023", "06-04-2023"]

基于当前日期的简化版本

如果是直接从当前日期获取前序日期,只需把目标日期替换为new Date()即可:

function getPreviousDatesFromToday(count) {
    const today = new Date();
    const dates = [];

    for (let i = 1; i <= count; i++) {
        const prevDate = new Date(today);
        prevDate.setDate(today.getDate() - i);
        
        const formattedDay = String(prevDate.getDate()).padStart(2, '0');
        const formattedMonth = String(prevDate.getMonth() + 1).padStart(2, '0');
        const formattedYear = prevDate.getFullYear();
        
        dates.push(`${formattedDay}-${formattedMonth}-${formattedYear}`);
    }

    return dates;
}

// 使用示例:获取今天的前3天日期
console.log(getPreviousDatesFromToday(3));

关键注意事项

  • 始终创建Date对象的副本进行修改,避免循环中修改原日期导致的逻辑错误。
  • 用padStart(2, '0')保证日、月的两位数字格式,避免出现6-7-2023这类不统一的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:22:06