Duplicar posibles:
What is the best way to determine the number of days in a month with javascript?¿Recibe el número de días en un mes específico usando JavaScript?
Decir que tengo el mes como un número y un año.
Duplicar posibles:
What is the best way to determine the number of days in a month with javascript?¿Recibe el número de días en un mes específico usando JavaScript?
Decir que tengo el mes como un número y un año.
// Month is 1-indexed (January is 1, February is 2, etc).
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
La siguiente toma cualquier valor de fecha y hora válida y devuelve el número de días del mes asociado ... que elimina la ambigüedad de las dos otras respuestas ...
// pass in any date as parameter anyDateInMonth
function daysInMonth(anyDateInMonth) {
return new Date(anyDateInMonth.getYear(),
anyDateInMonth.getMonth()+1,
0).getDate();}
Lanza un error cuando lo llamo: daysInMonth (new Date()). – CyberFox
Sí, simplemente cambie '++ anyDateInMonth.getMonth()' a 'anyDateInMonth.getMonth() + 1' – rescuecreative
@rescuecreative, ¿funcionaría así:' ++ (anyDateInMonth.getMonth()) '?? –
Date.prototype.monthDays= function(){
var d= new Date(this.getFullYear(), this.getMonth()+1, 0);
return d.getDate();
}
Por lo que entiendo, 'new Date (year, month, 0)' producirá el último día del último mes, por lo que agregar '+ 1' a los parámetros da como resultado los días del mes actual. No estoy corrigiendo nada aquí. Estoy tratando de asegurarme de que entiendo, y creo que la respuesta de Kennebec es la respuesta correcta. – Brent
@Brent lo entendiste correctamente. También esta función respeta los meses de Javscript que están basados en 0, lo que es agradable y conveniente – Aides
Esta es la respuesta correcta, no la anterior. – Shawn
Otra posible opción sería utilizar Datejs
a continuación, puede hacer
Date.getDaysInMonth(2009, 9)
Aunque la adición de una biblioteca sólo para esta función es un exceso, siempre es bueno saber todas las opciones que haya una base 0-a su disposición :)
aquí está la función que usan en Datejs: return [31, ($ D.isLeapYear (year)? 29: 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] [month] ; – CyberFox
en meses Javascript, por lo que mientras esto parece correcto es inconsistente con otras funciones de Javascript – Greg
Derecha. Así que utiliza mi función si estás analizando la entrada del usuario y la función de alscratch si estás usando la entrada programática. –
Excepto que no funciona. nueva Fecha (2012, 5, 0) .getDate() devuelve 31. Solo hay 30 días en junio. Lo mismo para muchos otros meses. http://jsfiddle.net/LVLd3/ frente al calendario correcto en http://www.timeanddate.com/calendar/ – SamGoody