Hoy veremos cómo obtener el número de días que tiene un mes de cualquier año. Por ejemplo, el mes de Abril del 2018 tiene 30 días, pero bien sabemos que esto cambia dependiendo del mes y también del año (si es o no bisiesto).
Así que investigando me encontré con una función sencillísima de implementar.
Dicho con otras palabras, estimaremos o calcularemos el número o cantidad de días que tiene determinado mes del año actual o de un año cualquiera.
La función que escribiremos devolverá el número entero de días que hay en un mes.
Aquí la función:
function diasEnUnMes(mes, año) {
return new Date(año, mes, 0).getDate();
}
Recibe dos parámetros: el año y el mes, como números. Enero quiere decir 1, Febrero 2, etcétera. El año debe ser algo como 2015, 2016, etcétera.
Nota: esta función, y sólo esta función, cuenta los meses desde el 1 (enero es 1, diciembre 12) pero normalmente, Javascript cuenta los meses desde 0 (enero es 0, diciembre 11). Lo digo para evitar confusiones.
Algunos ejemplos de llamada…
Todo correcto. Pero podemos mejorar nuestra función
Mejoremos la función para que reciba el nombre del mes y en base a ello devuelva sus días, así evitamos confusiones calculando el número. Queda así:
function diasEnUnMes(mes, año) {
mes = mes.toUpperCase();
var meses = ["ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE"];
return new Date(año, meses.indexOf(mes) + 1, 0).getDate();
}
Lo único que hacemos es primeramente convertir el nombre a mayúsculas, buscar su índice y sumarle 1. Dado que los meses están ordenados, sólo tenemos que sumar 1.
Por ejemplo, enero tiene el índice 0, pero al sumarle 1 se convierte en 1. Igual diciembre, tiene el 11 pero le sumamos 1 para que se convierta en 12.
Al llamar a la función pasa esto…
Finalmente veamos cómo obtener los días del mes actual. Sólo tenemos que modificar un poco la función original.
function diasDelMesYAñoActual() {
var fecha = new Date();
return new Date(fecha.getFullYear(), fecha.getMonth() + 1, 0).getDate();
}
Lo que hacemos ahora es crear un nuevo objeto con la fecha actual, obtener el mes y año. Es importante notar que al mes le sumamos uno porque, como ya expliqué arriba, esta función cuenta los meses desde el 1 pero Javascript desde 0.
Si la ejecuto al momento de escribir esto…
Qué fácil e inteligente es este método, aunque yo no soy el autor, yo simplemente trato de explicarlo y facilitar su uso. El autor es quien respondió a esta pregunta de StackOverflow.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios
Genial la función salvo que fallara si no indicas que cambien la ñ por una n, saludos!
En mi caso no pasa nada si invoco a la función con la variable con ese nombre, de igual manera gracias por tu comentario, ayudará a gente que se encuentre con el mismo problema.
No olvides seguirme y compartir :)