Indagamos por diferentes foros para así traerte la solución para tu problema, si tienes alguna difcultad puedes dejar un comentario y te contestamos sin falta.
Solución:
Esta solución es simple, fácil de seguir y funciona bien para mí:
function addBusinessDays(originalDate, numDaysToAdd)
const Sunday = 0;
const Saturday = 6;
let daysRemaining = numDaysToAdd;
const newDate = originalDate.clone();
while (daysRemaining > 0)
newDate.add(1, 'days');
if (newDate.day() !== Sunday && newDate.day() !== Saturday)
daysRemaining--;
return newDate;
Prueba: momento-días-laborales
Debería ayudarte.
Ejemplo:
var momentBusinessDays = require("moment-business-days")
momentBusinessDays('20-09-2018', 'DD-MM-YYYY').businessAdd(3)._d
Resultado:
Tue Sep 25 2018 00:00:00 GMT+0530 (IST)
Tampoco podría usar una biblioteca externa y hacer una función simple como una de estas dos:
const WEEKEND = [moment().day("Saturday").weekday(), moment().day("Sunday").weekday()]
const addBusinessDays1 = (date, daysToAdd) =>
var daysAdded = 0,
momentDate = moment(new Date(date));
while (daysAdded < daysToAdd)
momentDate = momentDate.add(1, 'days');
if (!WEEKEND.includes(momentDate.weekday()))
daysAdded++
return momentDate;
console.log(addBusinessDays1(new Date(), 7).format('MM/DD/YYYY'))
console.log(addBusinessDays1('09-20-2018', 3).format('MM/DD/YYYY'))
// This is the somewhat faster version
const addBusinessDays2 = (date, days) =>
var d = moment(new Date(date)).add(Math.floor(days / 5) * 7, 'd');
var remaining = days % 5;
while (remaining)
d.add(1, 'd');
if (d.day() !== 0 && d.day() !== 6)
remaining--;
return d;
;
console.log(addBusinessDays2(new Date(), 7).format('MM/DD/YYYY'))
console.log(addBusinessDays2('09-20-2018', 3).format('MM/DD/YYYY'))
Están ligeramente modificados de esta publicación y creo que son una buena alternativa a la biblioteca externa que tiene que llevar/tratar (asumiendo que esta es la única parte que necesita y no otras características de esa biblioteca).
Reseñas y calificaciones
Si tienes algún reparo o capacidad de regenerar nuestro reseña puedes escribir una reseña y con deseo lo leeremos.
¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)