【问题标题】:Why is February, month 2, showing it has 31 days in javascript? [closed]为什么 2 月,第 2 个月,在 javascript 中显示它有 31 天? [关闭]
【发布时间】:2017-12-20 18:04:18
【问题描述】:

Javascript 报告 2 月有 31 天。下面的代码显示第二个月的天数超出了应有的天数。怎么回事?

    var currentDate = new Date(2018, 2, 4);

    function getDaysInMonth(month, year) {
      var date = new Date(year, month, 1);
      var days = [];
      while (date.getMonth() === month) {
        days.push(new Date(date));
        date.setDate(date.getDate() + 1);
      }
      return days;
    }

    var dayArr = getDaysInMonth(currentDate.getMonth(), currentDate.getFullYear());
    alert('month: '+currentDate.getMonth()+' year: '+currentDate.getFullYear()+' days: '+dayArr.length);

【问题讨论】:

  • Date(2018, 2, 4) 是 3 月 4 日。在 JavaScript 中,月份是从零开始的
  • 不需要小提琴。只需在您的问题中的代码 sn-p 中包含您的代码即可。
  • 1 = 2 月........
  • 如果这是用于生产脚本(不仅仅是练习),您可能需要考虑使用 JS 状态库(例如 Moment.js),因为它们通常会处理所有奇怪和意外的行为给你。
  • 这实际上是 javascript is creating date wrong month 的副本(或许多其他副本中的任何一个)。

标签: javascript jquery html date


【解决方案1】:

那是因为月份是 0 索引的,所以 JS 中的第 2 个月是 3 月。试试看,

var currentDate = new Date(2018, 1, 4);

这将输出 28 天。

【讨论】:

  • 嗯,这是正确的。为什么要投反对票?
  • 不是我的反对票,但有plenty of duplicates可供选择。
猜你喜欢
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
相关资源
最近更新 更多