Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

172
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!