Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

159
Vistas
Javascript para obtener el día hábil anterior. Devuelve indefinido

He estado golpeando mi cabeza durante unas horas buscando una solución. ¿Por qué prevDate devolvería indefinido? Simplemente no entiendo lo que me estoy perdiendo.

 async function prevDate(date) { date.setDate(date.getDate()-1) if (date.getDay() == 0 || date.getDay() == 6) { prevDate(date) } else { console.log("date: ", date, "day: ", date.getDay()) return (date) } } date = new Date("2021-09-20T00:00:00") prevDate(date) .then((res) => { console.log("res: ", res) //undefined }) .catch((err) => { console.log(err) }) output date: 2021-09-17T04:00:00.000Z day: 5 res: undefined
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Las otras personas indicaron la razón por la que su código no funciona. Pero me pregunto por qué está utilizando una función asíncrona para el código que no es asíncrono. Si aún desea usar una función recursiva, puede escribirse simplemente así:

 function prevDate (date) { date.setDate(date.getDate() - 1); if (!(date.getDay() % 6)) { return prevDate(date); } else { console.log(`date: ${date} day: ${date.getDay()}`); return date; } } const date = new Date("2021-09-20T00:00:00"); console.log(`res: ${prevDate(date)}`);

O puedes simplificarlo aún más:

 const prevDate = (date) => { date.setDate(date.getDate() - 1); return !(date.getDay() % 6) ? prevDate(date) : date; }; const date = new Date("2021-09-20T00:00:00"); console.log(`res: ${prevDate(date)}`);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede escribir una función simple que reste 1, 2 o 3 días según el día de la semana en que se encuentre la fecha, por ejemplo

 // Return previous work day (ie not Sat or Sun) function getPreviousWorkDay(d = new Date()) { return new Date(d.getFullYear(), d.getMonth(), d.getDate() - ({1:3, 0:2}[d.getDay()] || 1) ); } // Examples over year and month end [new Date(2020,11,28), // Mon new Date(2020,11,29), // Tue new Date(2020,11,30), // Wed new Date(2020,11,31), // Thu new Date(2021, 0, 1), // Fri new Date(2021, 0, 2), // Sat new Date(2021, 0, 3), // Sun ].forEach(d => console.log(`${d.toDateString()} => ${getPreviousWorkDay(d).toDateString()}`) );

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda