如果我输入2020年之后的年份,谁能告诉我为什么是3月而不是2月?
在Windows 10,Chrome和Edge上测试
const date = new Date()
date.setFullYear("2021")
date.setMonth("1") // February
date.setDate("23")
console.log(date)
控制台日志的结果...
2021年3月23日,星期二22:38:13 GMT + 0800(新加坡标准时间)
以下显示了正确的月份...
var event = new Date('August 19, 2025 23:15:30');
event.setMonth(1);
console.log(event);
结果是
2025年2月19日,星期三23:15:30 GMT + 0800(新加坡标准时间)
请注意:如果我使用2020年或以下,则返回值正确。答案需要对此进行解释。
最佳答案
只是为了扩展注释(“ 2020年是leap年,它是2月29日。(我假设您今天是7月29日在测试此代码)”),并带有示例代码:
function test29(year){
var date=new Date();
date.setDate(29); // "emulate" today, 29th of something
date.setFullYear(year);
date.setMonth(1);
date.setDate(23);
console.log(date);
}
console.log("test29 is affected by leap years:");
test29(2019);
test29(2020);
test29(2021);
function test19(year){
var date=new Date();
date.setDate(19); // "emulate" a 19th of something
date.setFullYear(year);
date.setMonth(1);
date.setDate(23);
console.log(date);
}
console.log("test19 is not affected by leap years:");
test19(2019);
test19(2020);
test19(2021);
加上指定的重复项(JavaScript Date Bug February 2014)写入的内容。