Saltar al contenido

¿Cómo puedo usar moment.js para agregar días, excepto los fines de semana?

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)



Utiliza Nuestro Buscador

Deja una respuesta

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