Javascript 新的日期(2020年12月122日)应该会给我带来错误

Javascript 新的日期(2020年12月122日)应该会给我带来错误,javascript,Javascript,但实际上这是错误的,因为122天并不存在 如何返回错误的日期格式而不是重新计算的日期?如果日期错误无效,javascript中是否可能出现日期错误 新日期(2020年2月29日)应无效您可以创建一个“安全”构造函数,用于检查以确保月份和年份保持不变: 函数日期(年、月、日){ const d=新日期(年、月、日); 如果(d.getMonth()!==月| | d.getFullYear()!==年){ 抛出新的RangeError(“日期溢出”); } 返回d; } const d=安全施工日

但实际上这是错误的,因为122天并不存在

如何返回错误的日期格式而不是重新计算的日期?如果日期错误无效,javascript中是否可能出现日期错误

新日期(2020年2月29日)应无效

您可以创建一个“安全”构造函数,用于检查以确保月份和年份保持不变:

函数日期(年、月、日){
const d=新日期(年、月、日);
如果(d.getMonth()!==月| | d.getFullYear()!==年){
抛出新的RangeError(“日期溢出”);
}
返回d;
}
const d=安全施工日期(2020年11月122日);

这是JS Date的一个怪癖。它需要天数,并将其添加到日期中,在您的案例中,2020-12-01+121天=2021-05-02需要122天

const d=新日期(2020年12月122日);
console.log(“2020年12月,共122天”,d)
const valid=新日期(2020年12月1日);
console.log(“2020年12月1日”,有效)
const addDays=(日期,天)=>{
date.setDate(date.getDate()+天);
返回日期;
}

console.log(“2020年12月,1天+121天”,addDays(有效,121天))看起来没有严格的版本。如果您给它的天数比当月多,它很可能会滚动到下一个月/年。因为它的索引为零,所以第12个月也不存在;)好主意。非常感谢。
var d = new Date(2020, 12, 122);
return
Sun May 02 2021 00:00:00 GMT+0200 (Central European Summer Time)