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

173
Visualizações
Fecha recurrente usando dayjs con dayrs-recur

Estoy dispuesto a crear una fecha recurrente basada en el "enésimo día de la semana del mes" Aquí está mi solución cuando selecciono la fecha actual

 let dates = {};
 const currentDate = dayjs();
 const recurrence = currentDate
 .recur(dayjs().add(4, "month"))
 .every("Wednesday")
 .daysOfWeek()
 .every(currentDate.monthWeekByDay())
 .weeksOfMonthByDay();
 recurrence.all().forEach((date) => {
 dates[date.format("YYYY-MM-DD")] = { selected: true, };
 });
// dates = ["2022-09-21","2022-10-19","2022-11-16","2022-12-21","2023-01-18"]

pero si pones ultimo dia de este mes que es 30

 let dates = {};

 const lastDayofMonth = dayjs().endOf("month");
 const recurrence = lastDayofMonth
 .recur(dayjs().add(4, "month"))
 .every("Friday")
 .daysOfWeek()
 .every(lastDayofMonth.monthWeekByDay())
 .weeksOfMonthByDay();

estaba esperando conseguir

 ["2022-09-30","2022-10-28","2022-11-25","2022-12-30"..]

en vez de

 ["2022-09-30","2022-12-30"]

Aquí estála demostración

¿Me estoy perdiendo algo? Gracias de antemano

almost 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es posible crear una fecha recurrente basada en el "enésimo día de la semana del mes" con dayjs y dayjs-recur como todos los meses como un número diferente de semanas

Pero hay algunos desafíos:

  • Un mes tiene 4 semanas en promedio (algunos meses tienen pocos o ningún día para la quinta semana)
  • Debido a esto, puede haber casos en los que no haya una quinta semana o la quinta semana no tenga el enésimo día de la semana .

Para resolver esto

  • Si obtiene un enésimo día de la semana del mes donde la semana es la última semana del mes (podría ser la semana 4 o 5)
  • Obtenga el enésimo día de la semana del mes para la última semana (5) y la cuarta (4) semana
  • De la lista de fechas devueltas, filtre si las fechas de un mes ocurren varias veces y seleccione la última/mejor
  • El resultado filtrado debe tener el enésimo día de la semana del mes, donde la semana es la última semana del mes.

Manifestación

A continuación se muestra un enlace a una demostración de trabajo bifurcada de la demostración de @Achraf en el código sandbox

Enlace de demostración

Ejemplo de código

 const lastDayofMonth = dayjs().endOf("month");

 const recurrence = lastDayofMonth
 .recur(dayjs().add(4, "month"))
 .every("Friday")
 .daysOfWeek()
 .every([3, 4])
 .weeksOfMonthByDay();

 // filter recurrence
 const months = {};
 recurrence.all().forEach((date) => {
 months[date.month()] = date;
 })

 // get filtered dates
 const filteredDates = Object.values(months);

 // formot date into dates object
 filteredDates.forEach((date) => {
 dates[date.format("YYYY-MM-DD")] = { selected: true, color: "#2FB0ED" };
 });

 console.log("dates", dates);
 // ["2022-09-30","2022-10-28","2022-11-25","2022-12-30"..]
almost 4 years ago · Santiago Trujillo 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