使用new Date(year,month,day)构造日期时getDay返回结果异常原因问询
原因说明
多参数形式的Date构造函数有明确的参数规则:月份参数是从0开始计数的,取值范围为0~11,分别对应1月到12月。
你传入的月份参数为12,已经超出了合法范围,JS引擎会自动对日期做进位换算:2021年第12月会被自动换算为2022年1月,最终你构造出来的日期实际是2022年1月6日,该日期的星期为周四,正好对应getDay()的返回值4,不属于方法计算错误,是参数使用不符合规范导致的预期偏差。
修正方案
如果要通过多参数构造2021年12月6日的日期对象,将月份参数减1即可:
const date = new Date(2021, 11, 6); console.log(date.getDay()); // 返回1,对应周一,和字符串参数构造的结果完全一致
补充说明
getDay()的返回值同样是从0开始计数,0对应周日、1对应周一,依此类推直到6对应周六,使用时也需要注意计数规则。
内容的提问来源于stack exchange,提问作者Andrii Radkevych
相关产品推荐
相关产品推荐

