Días que tiene un mes en Javascript

Introducción

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.

Obtener días que tiene 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…

Número de días que tiene un mes según su número y año
Número de días que tiene un mes según su número y año

Todo correcto. Pero podemos mejorar nuestra función

Obtener días del mes por nombre

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…

Número de días que tiene un mes según su nombre y año
Número de días que tiene un mes según su nombre y año

Obtener días del mes y año actual

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…

Días que tiene el mes actual
Días que tiene el mes actual

Conclusión

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Días que tiene un mes en Javascript”

    1. 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 🙂

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *