Hola a todos!
Como continuación al post anterior: CUSTOM FUNCTION PARA GENERAR LISTA DE FECHAS ENTRE DOS FECHAS CON TYPESCRIPT en que generábamos un listado de fechas entre dos fechas. He decido aprovechar el trabajo y hacer unas modificaciones para obtener la misma lista de fechas pero solo con días laborales, (o cualquier otro día).
En realidad el planteamiento es muy sencillo, únicamente tenemos que excluir del loop que va guardando las fechas en una variable los días sábado y domingo.
En el código lo vais a ver perfectamente:
/**
* @customfunction
* @param {number[][]}
* @returns {string[][]}
*/
function fechasEntreLab(inicio, final) {
//convertimos fecha número
var ini = new Date(Math.round((inicio - 25569) * 86400 * 1000)).toLocaleDateString("en-US");
var fin = new Date(Math.round((final - 25569) * 86400 * 1000)).toLocaleDateString("en-US");
var i = 0;
do {
i++;
//generamos días
var nIni = new Date(Date.parse(ini) + i * 24 * 60 * 60 * 1000);
var nFin = new Date(Date.parse(fin) + 1 * 24 * 60 * 60 * 1000);
//formateamos fecha
var fechas = ('0' + nIni.getUTCDate()).slice(-2) + '/'
+ ('0' + (nIni.getUTCMonth() + 1)).slice(-2) + '/'
+ nIni.getUTCFullYear();
//obtenemos el día, en este caso el literal
let alfafechas = new Date(nIni.getUTCFullYear() + "/" + (nIni.getUTCMonth() + 1) + "/" + nIni.getUTCDate()).toLocaleString("es-ES", { weekday: "long", });
//condicionamos a que solo vamos se agrupen días de la semana
if (alfafechas != 'sábado' && alfafechas != 'domingo') {
var sCadena = sCadena + "," + fechas;
}
}
while (nIni < nFin);
var resultado = sCadena.toString().split(",");
var ncadena = resultado.shift();
return [resultado]
};
Como tenemos la oportunidad de obtener el literal del día de la semana de cada fecha que se va generando:
let alfafechas = new Date(nIni.getUTCFullYear() + "/" + (nIni.getUTCMonth() + 1) + "/" + nIni.getUTCDate()).toLocaleString("es-ES", { weekday: "long", });
Podemos incluir una condición para que no tenga en cuenta los días sábado y domindo:
if (alfafechas != 'sábado' && alfafechas != 'domingo') {
var sCadena = sCadena + "," + fechas;
}
Así solo vamos a obtener los días de la semana, es decir, los días laborales. Y además si necesitamos excluir cualquier otro día, solo tenemos que indicarlo en la condición.
Este es el resultado:

Sin duda, es una forma de obtener estos datos con Typescript. Espero que sea de utilidad!!
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies