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

JavaScript中getMonth()返回值偏移2?已知0索引为何结果不符合预期

问题原因

你遇到的偏差是本地时区与UTC时区不一致导致的:

  • Date.getMonth() 是基于运行环境的本地时区计算返回月份,而Node.js中直接打印Date实例默认输出的是UTC标准时间字符串,二者的时区基准不同,自然会出现结果不匹配的情况。
  • 你使用的时间戳1622513190000对应的UTC时间为2021-06-01T02:06:30.000Z,若你的Node运行环境时区设置为UTC-10及以西的区域,此时本地时间会落在2021年5月31日,getMonth()返回5月对应的0索引值4,和你得到的结果完全一致。

解决方法

  • 如果你需要获取UTC时间对应的月份,替换使用myDate.getUTCMonth()即可,该方法会基于UTC时区计算月份,你的场景下调用会返回你预期的5。
  • 你可以通过console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)查看当前Node环境的默认时区,也可以在启动脚本时手动指定时区为UTC,避免本地时区干扰:
    TZ=UTC node your_script.js
    
    此时运行你的原有代码就会返回预期的5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:45:04