JavaScript日期加天数跨月时如何正确实现月份递增
错误原因
- 你代码里的
nextMonth直接复用了原日期的月份,没有从加14天后的addday对象里读取实际月份,1月20日加14天已经跨到2月,沿用原月份自然会输出1.03.2021 - 代码中引用了未定义的
day变量,运行时会直接抛出引用错误 - 年份同样直接取了原日期的年份,若加天操作跨越了年份,输出也会出错
- 没有对日期做前导零补全,不符合你预期的
2.03.2021格式要求
修正后可直接运行的代码
// 固定基准日期为2021年1月20日,要使用当前日期替换为new Date()即可 const baseDate = new Date('1.20.2021') // 加14天 const expireDate = new Date(baseDate.getTime() + 14 * 24 * 60 * 60 * 1000) // 分别读取计算后的年月日,注意月份要+1,JS原生月份从0开始计数 const year = expireDate.getFullYear() const month = expireDate.getMonth() + 1 // 日期补前导零,不足两位前面补0 const day = String(expireDate.getDate()).padStart(2, '0') // 拼接输出 const result = `${month}.${day}.${year}` console.log(result) // 输出 2.03.2021 return result
额外优化建议
也可以用setDate方法实现加天,不需要手动计算毫秒数,容错性更高,会自动处理跨月、跨年的边界情况:
const baseDate = new Date('1.20.2021') baseDate.setDate(baseDate.getDate() + 14) // 后续取值、拼接逻辑和上面一致即可
内容的提问来源于stack exchange,提问作者Rexz
相关产品推荐
相关产品推荐

