You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:06:01