如何使用JavaScript日期函数获取当前日期的前序日期
如何用JavaScript获取指定日期的前序日期
完全可以通过JavaScript内置的Date对象实现这个需求,核心是利用Date的日期调整方法,再配合日期格式化逻辑即可。
实现思路与示例
- 解析目标日期:不管是当前日期还是指定日期(比如你示例中的
06-07-2023),都需要先转换为Date实例。注意Date的月份是0-based(0代表1月,11代表12月),处理时要做对应转换。 - 调整日期:使用
setDate()方法,通过减去对应天数得到前序日期。这个方法会自动处理跨月/跨年的边界情况(比如1月1日减1天会自动变为去年12月31日)。 - 格式化输出:将调整后的
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
相关产品推荐
相关产品推荐

