function GetDaysInMonth(month, year)
{
return 32 - new Date(year, month, 32).getDate();
}
好的,我不明白这是做什么的,这一部分:
new Date(year, month, 32).getDate();
我知道getDate()
做了什么,但后来我在JavaScript中查找Date
,但在这个特殊的例子中,我不明白为什么你在这里传递32。如何回报你传递给它的任何月份和年份的天数?
答案 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)
。