Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

71
Visualizações
Mostrar meses entre dos fechas con años diferentes

Tengo una serie de meses:

 const monthsArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

También tengo dos fechas: 2021-09-07 y 2022-03-17 . Para obtener el número de meses entre estas fechas, uso la función:

 function monthDiff(dateFrom, dateTo) { return dateTo.getMonth() - dateFrom.getMonth() + 12 * (dateTo.getFullYear() - dateFrom.getFullYear()); }

¿Cómo mostrar todos los meses de la matriz monthsArr entre esas dos fechas? Gracias de antemano por cualquier ayuda.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puede que le resulte útil utilizar una biblioteca de utilidades como date-fns ( https://date-fns.org/ ), más específicamente la sub ( https://date-fns.org/v2.28.0/docs/sub )

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar Array().fill() para generar los 12 meses para todos los años involucrados, aplanarlo y luego slice la parte relevante. Para asegurarse de que el segundo argumento de slice sea negativo (¡no cero!), incluso agregue 12 meses más a eso. El segundo argumento será entonces un valor entre -23 y -12:

 const monthsArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; function monthsBetween(dateFrom, dateTo) { return Array(dateTo.getFullYear() - dateFrom.getFullYear() + 2) .fill(monthsArr).flat() .slice(dateFrom.getMonth(), dateTo.getMonth() - 23); } let dateFrom = new Date("2021-09-07"); let dateTo = new Date("2022-03-17"); console.log(monthsBetween(dateFrom, dateTo));

about 4 years ago · Juan Pablo Isaza Relatório

0

Un enfoque simplista es incrementar la fecha de inicio en un mes a la vez y devolver el valor en ese índice de la matriz. El único problema es determinar si "entre" incluye el mes de inicio y finalización o solo los que se encuentran entre esos meses.

Lo siguiente incluye los meses de inicio y finalización en el resultado:

 let months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; function getMonthsBetweenDates(startDate, endDate) { // Make start as 1st of startDate month let s = new Date(startDate.getFullYear(), startDate.getMonth()); let result = []; // Loop over months until get to end month while (s <= endDate) { result.push(months[s.getMonth()]); s.setMonth(s.getMonth() + 1); } return result; } // Get months between 2021-09-07 and 2022-03-17 console.log(getMonthsBetweenDates(new Date(2021,8,7), new Date(2022,2,17)));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda