Necesito llamar a una API, pasar la fecha de inicio y finalización, pero dado que el intervalo es demasiado amplio, creo que necesito hacer varias llamadas con intervalos de fechas más pequeños. Así es como estoy tratando de establecer fechas de inicio y finalización:
const daysBracket = 15; let fromDate = new Date('2020-04-01'); let toDate = new Date('2020-06-01'); let stopDate = new Date('2020-04-01'); while(fromDate <= toDate) { stopDate.setDate(fromDate.getDate() + (daysBracket - 1)); console.log('Start: ' + fromDate.toDateString()); console.log('Stop: ' + stopDate.toDateString()); console.log('- - - - - - - - - - - - -'); fromDate.setDate(fromDate.getDate() + daysBracket); }pero obtengo este resultado (la fecha de inicio se actualiza correctamente pero la fecha de finalización no cambia en consecuencia):
Start: Wed Apr 01 2020 Stop: Wed Apr 15 2020 - - - - - - - - - - - - - Start: Thu Apr 16 2020 Stop: Thu Apr 30 2020 - - - - - - - - - - - - - Start: Fri May 01 2020 Stop: Wed Apr 15 2020 - - - - - - - - - - - - - Start: Sat May 16 2020 Stop: Thu Apr 30 2020 - - - - - - - - - - - - - Start: Sun May 31 2020 Stop: Fri May 15 2020 - - - - - - - - - - - - - Start: Mon Jun 15 2020 Stop: Fri May 29 2020 - - - - - - - - - - - - - Start: Tue Jun 30 2020 Stop: Sat Jun 13 2020 - - - - - - - - - - - - -¿Puedes decirme qué estoy haciendo mal?
Supongo que esta respuesta proporciona algo de claridad. Los siguientes trabajos:
const daysBracket = 15; let fromDate = new Date('2020-04-01'); let toDate = new Date('2020-06-01'); let stopDate = new Date('2020-04-01'); function addDays(date, days) { var result = new Date(date); result.setDate(result.getDate() + days); return result; } while(fromDate <= toDate) { stopDate = addDays(fromDate, daysBracket -1) console.log('Start: ' + fromDate.toDateString()); console.log('Stop: ' + stopDate.toDateString()); console.log('- - - - - - - - - - - - -'); fromDate = addDays(fromDate, daysBracket); }