Ответ 1

//Month is 1 based
function daysInMonth(month,year) {
    return new Date(year, month, 0).getDate();
}

//July
daysInMonth(7,2009); //31
//February
daysInMonth(2,2009); //28
daysInMonth(2,2008); //29

Ответ 2

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

Ответ 3

Следующее принимает любое допустимое значение datetime и возвращает количество дней в соответствующем месяце... это устраняет двусмысленность обоих других ответов...

 // pass in any date as parameter anyDateInMonth
function daysInMonth(anyDateInMonth) {
    return new Date(anyDateInMonth.getYear(), 
                    anyDateInMonth.getMonth()+1, 
                    0).getDate();}

Ответ 4

Другим возможным вариантом было бы использовать Datejs

Затем вы можете сделать

Date.getDaysInMonth(2009, 9)     

Хотя добавление библиотеки только для этой функции является излишним, всегда приятно знать все доступные вам опции:)