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

JS Date对象获取月份天数返回错误结果问题咨询

问题原因

错误是getMonth()的返回值规则导致的,和你用字符串初始化Date的逻辑无关:

  1. 用2021/9/11这类字符串创建Date实例时,月份确实按1-12的常规计数识别,拿到的日期对象是正确的。
  2. 但Date.getMonth()方法的返回值是0-11计数:9月对应返回值为8,10月对应返回值为9。
  3. 你用的new Date(年, 月, 0).getDate()逻辑,本身的作用是获取「传入月份的上一个月的总天数」。

三者叠加就出现了你遇到的异常:

  • 9月传入getMonth()返回的8,计算得到8月的总天数31,和预期9月30天不符
  • 8月传入getMonth()返回的7,计算得到7月总天数31,刚好和8月天数一致,所以看似正常
  • 10月传入getMonth()返回的9,计算得到9月总天数30,和预期10月31天不符

修复方案

调整计算逻辑,给getMonth()的返回值加1即可:

const date = new Date("2021/9/11");
// 月份参数+1,取对应月份上个月的最后一天,刚好是当前月份的总天数
const daysInMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
console.log(daysInMonth) // 输出30,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:57:03