¿Cómo puedo hacer esta secuencia de fecha con trimestral. por ej. la entrada es `"2022-03-14" la entrada es dinámica depende de la entrada del usuario... Estoy tratando de agregar + 10 días pero no funciona
La salida que quiero
[ "2022-03-24", "2022-04-04", "2022-04-14", "2022-04-24", "2022-05-04", "2022-05-14", "2022-05-24", "2022-06-04", "2022-06-14", "2022-06-24", ]Mi salida de código que está desgastada
[ "2022-03-24", "2022-04-14", "2022-04-24", "2022-05-14", "2022-05-24", "2022-06-14", "2022-06-24", "2022-07-14", "2022-07-24", ] function createSchedule(date, count){ date = new Date(date); let day = date.getDate();// Get day in given date let k = 0; let days = k? [day - 10, day , day + 10] : [day, day + 10, day- 10]; let result = []; if(day > 10){ k = +0 }else{ if(day > 20 ){ k = +1 }else{ k= +2 } } for(let i = 0; i < count; i++){ k= 1-k; date.setDate(days[k]); // When date overflows into next month, take last day of month if (date.getDate() !== days[k]) date.setDate(0); if (!k) date.setMonth(date.getMonth() + 1); result.push(date.toLocaleDateString("en-SE")); } return result } var dateRelease = new Date("03-14-2022"); var result = createSchedule(dateRelease, 9); console.log(result)Algunos problemas en su intento:
let k = 0 , ¿el operador condicional en k? siempre evaluará la primera expresión después de ? , que es [day - 10, day , day + 10] .day + 10 )[day, day + 10, day- 10] no está ordenada, pero debería estarlo.k = 1 - k asume que solo tiene dos entradas en su matriz de days , pero tiene tres, así que use aritmética modular: k = (k + 1) % 3Aquí hay una corrección:
function createSchedule(date, count) { date = new Date(date); let day = date.getDate(); let firstDay = 1 + (day - 1) % 10; let days = [firstDay, firstDay + 10, firstDay + 20]; let k = days.indexOf(day); let result = []; for (let i = 0; i < count; i++) { k = (k + 1) % 3; date.setDate(days[k]); // When date overflows into next month, take last day of month if (date.getDate() !== days[k]) date.setDate(0); if (!k) date.setMonth(date.getMonth() + 1); result.push(date.toLocaleDateString("en-SE")); } return result; } var dateRelease = new Date("2022-03-14"); var result = createSchedule(dateRelease, 25); console.log(result);