Vuetify日期选择器日期处理:加一年减一天后格式化遇问题
问题修复:日期加一年减一天并格式化
原代码存在的问题
- 方法调用错误:
a.getFullYear+1中getFullYear是Date对象的方法,必须加括号调用(getFullYear()),否则会把函数对象和1相加,导致年份设置完全错误 - 操作顺序颠倒:需求是先加一年,再减一天,原代码先减日再加年,逻辑不符合要求,特殊日期(如闰年2月29日)会出现计算偏差
- Date对象无法直接split:
a.split('-')是错误用法,Date对象没有split方法,不能直接按字符串拆分获取年月日 - 未处理补零:月份和日期为一位数时,无法满足
MM/DD/YYYY的两位格式要求
修正后的代码
formatDateNextYear(date) { if (!date) return null const targetDate = new Date(date); // 先执行加一年操作 targetDate.setFullYear(targetDate.getFullYear() + 1); // 再执行减一天操作 targetDate.setDate(targetDate.getDate() - 1); // 获取年、月、日,注意月份从0开始需加1,同时补零到两位 const year = targetDate.getFullYear(); const month = String(targetDate.getMonth() + 1).padStart(2, '0'); const day = String(targetDate.getDate()).padStart(2, '0'); return `${month}/${day}/${year}`; }
关键说明
- 严格遵循需求顺序:先加年再减日,避免闰年等特殊场景的计算错误
- 使用
padStart(2, '0')确保月份、日期始终为两位数字,完全匹配MM/DD/YYYY格式 - 通过Date对象内置方法获取年月日,避免依赖日期字符串的固定格式,兼容性更强
内容的提问来源于stack exchange,提问作者Qiuzman
相关产品推荐
相关产品推荐

