Node.js v14.15.1环境下Date对象调用getYear()、getDay()返回结果异常
Date方法返回值异常问题说明
第一个异常:getDay()返回6不符合预期
- Date构造函数的月份入参是0起始计数的,0对应1月,11对应12月。你传入的第二个参数为
4,实际创建的是2021年5月1日的日期对象,而非你预期的2021年4月1日。 getDay()方法返回的是星期几的索引,规则为:周日返回0,周一返回1,周六返回6。2021年5月1日为周六,因此返回6属于正常结果。- 如果你需要获取日期是当月的第几天,应该使用
getDate()方法而非getDay(),该方法会直接返回1-31的日期数值。
第二个异常:getYear()返回121不符合预期
getYear()属于已被ECMAScript标准废弃的方法,其设计逻辑为返回「当前年份 - 1900」的计算结果,2021-1900=121,因此返回结果符合方法定义。- 如需获取完整4位年份,替换为
getFullYear()方法即可得到预期的2021。
修正后的代码示例
// 4月对应月份参数为3 const date = new Date(2021, 3, 1) console.log(date.getDate()) // 获取当月第几天,返回1 console.log(date.getFullYear()) // 获取完整年份,返回2021
内容的提问来源于stack exchange,提问作者MrSolarius
相关产品推荐
相关产品推荐

