如何修改JavaScript日期转换代码获取前后10天日期
如何修改JavaScript代码获取10天后和10天前的日期
嘿,这事儿超简单!你现有的dateConverter函数已经完美搞定了日期格式化的问题,咱们只需要在创建日期对象时调整天数就行,而且Date对象自带的方法会帮你自动处理跨月、跨年的情况,完全不用手动算~
核心原理
Date对象的setDate()方法可以直接设置日期的天数,它会智能处理进位逻辑:
- 如果设置的天数超过当前月份的最大天数,会自动跳到下一个月(比如8月30日加10天 → 9月9日)
- 如果天数小于1,会自动回退到上个月(比如1月5日减10天 → 去年12月26日)
方案1:封装通用函数(推荐)
把获取N天前后的逻辑封装成函数,以后想获取任意天数的日期都能复用:
// 你原有的日期格式化函数,完全不用改! const dateConverter = (dateIn) => { var year = dateIn.getFullYear(); var month = dateIn.getMonth() + 1; // getMonth()从0开始计数,所以要加1 var day = dateIn.getDate(); return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0"); } // 获取N天后的日期 const getDateAfterNDays = (days) => { const targetDate = new Date(); // 创建当前日期的副本 targetDate.setDate(targetDate.getDate() + days); // 调整目标天数 return dateConverter(targetDate); } // 获取N天前的日期 const getDateBeforeNDays = (days) => { const targetDate = new Date(); targetDate.setDate(targetDate.getDate() - days); return dateConverter(targetDate); } // 测试示例 console.log("今天:", dateConverter(new Date())); console.log("10天后:", getDateAfterNDays(10)); console.log("10天前:", getDateBeforeNDays(10));
方案2:直接在代码中处理(简单场景)
如果只是临时需要10天前后的日期,也可以不用封装函数,直接写:
const dateConverter = (dateIn) => { var year = dateIn.getFullYear(); var month = dateIn.getMonth() + 1; var day = dateIn.getDate(); return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0"); } var today = new Date(); // 10天后的日期:必须创建新的Date对象,不然会修改原today的值 var tenDaysLater = new Date(today); tenDaysLater.setDate(today.getDate() + 10); console.log("10天后:", dateConverter(tenDaysLater)); // 10天前的日期 var tenDaysAgo = new Date(today); tenDaysAgo.setDate(today.getDate() - 10); console.log("10天前:", dateConverter(tenDaysAgo));
⚠️ 重要提醒:一定要创建today的副本(new Date(today)),不能直接修改原today对象!因为Date是引用类型,直接修改会改变原对象的数值,导致后续使用today时不再是最初的“今天”。
内容的提问来源于stack exchange,提问作者Dilhan Bhagat
相关产品推荐
相关产品推荐

