En este artículo sobre programación en JavaScript te mostraré cómo obtener el día de la semana según una fecha. Es decir, saber cuál día de la semana fue, y adicionalmente obtener su nombre.
Por ejemplo, hoy es lunes, así que el número del día de la semana es 1 (pues en JavaScript el domingo es 0) y el día es, aunque sea repetitivo, lunes.
Veamos algunas funciones para obtener esos resultados.
getDay para día de la semana
A partir de una fecha podemos crear un objeto de tipo Date
y después simplemente invocar al método getDay
. Esta función va a devolver un 0 para domingo, 1 para lunes y así hasta que sea 6 para sábado.
Veamos un ejemplo:
const fechaComoCadena = "2020-03-09 23:37:22"; // día lunes
const numeroDia = new Date(fechaComoCadena).getDay();
console.log("Número de día de la semana: ", numeroDia);
Al ejecutar el código el resultado es 1. Con eso podemos saber que es lunes. Puedes probar el ejemplo aquí.
Nombre del día de la semana en JavaScript
Trabajando con arreglos y usando getDay
como índice podemos devolver el nombre del día a partir de una fecha. Así:
const fechaComoCadena = "2020-03-09 23:37:22"; // día lunes
const dias = [
'domingo',
'lunes',
'martes',
'miércoles',
'jueves',
'viernes',
'sábado',
];
const numeroDia = new Date(fechaComoCadena).getDay();
const nombreDia = dias[numeroDia];
console.log("Nombre de día de la semana: ", nombreDia);
Al ejecutar el código se imprime “lunes”. Puedes probarlo aquí.
Encerrando en una función
Podemos encerrar el comportamiento de todo esto en una función que reciba la fecha y devuelva el nombre del día. Vamos a reducir un poco el código y a ahorrarnos algunas líneas, es decir, lo vamos a simplificar para que quede así:
const nombreDelDiaSegunFecha = fecha => {
return [
'domingo',
'lunes',
'martes',
'miércoles',
'jueves',
'viernes',
'sábado',
][new Date(fecha).getDay()];
}
Incluso podría quedar más corta:
const nombreDelDiaSegunFecha = fecha => [
'domingo',
'lunes',
'martes',
'miércoles',
'jueves',
'viernes',
'sábado',
'domingo',
][new Date(fecha).getDay()];
Más ejemplos
Por ahora mostramos con una fecha específica. Pero veamos otras fechas:
const nombreDelDiaSegunFecha = fecha => [
'domingo',
'lunes',
'martes',
'miércoles',
'jueves',
'viernes',
'sábado',
][new Date(fecha).getDay()];
const fechasParaProbar = [
"2013-01-18 17:00:00",
"2013-08-03 10:00:00",
"1997-06-21 22:00:00",
];
fechasParaProbar.forEach(fecha => {
console.log(`En ${fecha} fue ${nombreDelDiaSegunFecha(fecha)}`);
});
La salida es correcta:
Puedes probar el código en este enlace.
De este modo podemos indicar cuál día fue o saber el número de día. Puedes personalizar el algoritmo a tu gusto, yo solo te mostré un ejemplo.
Te invito a ver más sobre JavaScript en mi blog.
en el array de dias el ultimo domingo no esta demas? ese seria el indice 7 del array, pero getDay solo retorma un nuemro entre 0 y 6 cierto?
Hola. Tiene razón, ya lo he corregido, gracias.
Saludos!