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

手动传参实例化new Date()返回错误日期的原因咨询

问题原因及解决办法

核心原因1:月份参数是0开始索引的

JavaScript的Date构造函数有个反直觉的设计——月份参数从0开始计数:0对应1月,1对应2月……10对应的是11月,不是你以为的10月。这是日期“跳月”的直接原因。

核心原因2:时区导致的日期偏移

你看到的2022-11-09是UTC标准时间的显示结果。如果你的本地时区是东八区(比如北京时间),new Date(2022,10,10)对应的本地时间是2022年11月10日00:00,转成UTC时间就是前一天的16:00,所以打印出来会显示2022-11-09。

日历组件为什么正常?

日历选择器已经帮你做了两层适配:

  • 自动把你选中的“10月”转换成了Date要求的索引值9;
  • 输出时是基于本地时区展示日期,不会直接显示UTC格式的偏移结果,所以看起来和预期一致。

怎么修正代码?

  • 要构造2022年10月10日的日期,把月份参数减1就行:
    const newDate = new Date(2022, 9, 10);
    
  • 如果想避免时区偏移的显示问题,可以用toLocaleDateString()方法输出本地格式的日期:
    console.log(newDate.toLocaleDateString()); // 会输出类似"2022/10/10"的本地格式
    

内容的提问来源于stack exchange,提问作者Vadim Tregubenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:53:11