这个“日月”功能如何运作?

时间:2009-11-06 18:22:13

标签: javascript

  function GetDaysInMonth(month, year) 
  {
      return 32 - new Date(year, month, 32).getDate();
  }

好的,我不明白这是做什么的,这一部分:

 new Date(year, month, 32).getDate();

我知道getDate()做了什么,但后来我在JavaScript中查找Date,但在这个特殊的例子中,我不明白为什么你在这里传递32。如何回报你传递给它的任何月份和年份的天数?

3 个答案:

答案 0 :(得分:12)

任何一个月的“第32天”将转入下一个月。如果一个月有31天,“第32天”将是下个月的第1天。如果有30,那么“第32天”将是下个月的第2天。如果有28,那么“第32天”将是下个月的第4天。

从32减去任何这些,你得到正确的数字。

答案 1 :(得分:1)

Date.prototype.monthDays: function(){
 var d= new Date(this.getFullYear(), this.getMonth()+1, 0);
 return d.getDate();
}

下个月的日期是本月的最后一天......

警告(新日期()。monthDays()) //任何日期对象

答案 2 :(得分:-1)

试试这个:

function GetDaysInMonth(month, year) {
    return (new Date(new Date(year, month, 1, 0, 0, 0, 0)-86400000)).getDate();
}

这是使用前一个月的第一天,并从中减去一天(86400000毫秒)以获得给定月份的最后一天。请注意,Date参数需要从0(1月)到11(12月)的值。但是GetDaysInMonth使用1(1月)到12(12月):

GetDaysInMonth(12, 2007) // returns 31
GetDaysInMonth(1, 2008) // returns 31
GetDaysInMonth(2, 2008) // returns 29

如果您想使用与Date相同的值,请改用new Date(year, month+1, 1, 0, 0, 0, 0)