如何将new Date对象转换为dd-mm-yy格式并获取30天前的日期
JavaScript日期格式转换与30天偏移实现方案
实现需求
- 将
new Date实例解析为dd mm yy格式的日期字符串 - 获取指定日期
2020-07-09往前推30天的对应日期
核心逻辑说明
- 日期偏移:通过
Date实例的setDate()方法调整天数,往前推30天直接调用getDate() - 30即可,API会自动处理跨月、闰年的边界情况,无需手动计算月份天数 - 固定格式转换:手动提取日期的日、月、年字段,补零处理后拼接即可,避免
toLocaleDateString()受本地化环境影响输出格式不一致的问题 - 本方案无需依赖jQuery,原生JavaScript即可实现所有需求,适配所有现代浏览器环境
完整实现代码
// 构造指定日期的Date实例 const targetDate = new Date('2020-07-09'); // 往前推30天,得到偏移后的日期实例 const prior30Date = new Date(targetDate.setDate(targetDate.getDate() - 30)); // Date实例转dd mm yy格式工具函数 function formatDateToDDMMYY(dateInstance) { // 日期补两位零 const day = String(dateInstance.getDate()).padStart(2, '0'); // 月份从0开始计数,需+1后补零 const month = String(dateInstance.getMonth() + 1).padStart(2, '0'); // 取年份后两位 const year = String(dateInstance.getFullYear()).slice(-2); return `${day} ${month} ${year}`; } // 调用得到结果 const result = formatDateToDDMMYY(prior30Date); console.log(result); // 输出结果:09 06 20
参考方案修正说明
原参考方案部分内容修正:
- 原参考代码中
var priorDate = new Date().setDate(today.getDate() +30)实现的是往后推30天的逻辑,往前推30天需将+30修改为-30,该方法返回值为对应日期的时间戳- 原参考使用
toLocaleDateString()转换的格式受运行环境的地区设置影响,无法保证固定输出dd mm yy格式,手动提取字段拼接兼容性更强
内容的提问来源于stack exchange,提问作者Shifaz
相关产品推荐
相关产品推荐

