Estoy desarrollando un sistema de inscripción de estudiantes en el que necesito obtener los meses transcurridos desde la fecha de inscripción y necesito obtener las fechas de inicio y finalización de todos los meses transcurridos hasta la fecha.
let start_date = new Date('2022-01-24 15:00:00'); let months; months = (current_date.getFullYear() - start_date.getFullYear()) * 12; months -= start_date.getMonth(); months += current_date.getMonth(); let months_arr = []; for(let i = 0; i < months; i++){ let start = new Date(start_date.setDate(start_date.getMonth() + i)); let end = new Date(start.setDate(start.getMonth()+1)); months_arr.push({'start': start, 'end': end}); } return months_arr;Esto devuelve un resultado completamente inesperado:
[ { "start": "2021-12-12T20:00:00.000Z", "end": "2021-12-12T20:00:00.000Z" }, { "start": "2021-12-12T20:00:00.000Z", "end": "2021-12-12T20:00:00.000Z" }, { "start": "2021-12-12T20:00:00.000Z", "end": "2021-12-12T20:00:00.000Z" } ]¿Cómo puedo hacer esto?
necesita actualizar .setDate a .setMonth
let months_arr = []; for(let i = 0; i < months; i++){ let start = new Date(start_date.setMonth(start_date.getMonth() + i)); let end = new Date(start.setMonth(start.getMonth()+1)); months_arr.push({'start': start.toISOString(), 'end': end.toISOString()}); } para agregar meses en lugar de días, también agregué .toISOString() para formatear el inicio y el final en (ISO 8601)