Tengo un pequeño problema con este bloque de código.
Está destinado a encontrar el siguiente cronograma de rotación en una matriz, ignorando los anteriores.
Sin embargo, si la fecha de hoy es 2022-03-09, toma 2022-03-08T13:00:00.000Z como la próxima fecha futura posible. Creo que esto está mal. Debería volver 2023-04-13T13:00:00.000Z.
¿Cómo puedo arreglar esto?
export const rotaSchedules = [ '2021-12-13T12:00:00.000Z', '2021-12-13T14:00:00.000Z', '2022-01-13T14:00:00.000Z', '2022-01-23T14:00:00.000Z', '2022-01-24T13:00:00.000Z', '2022-02-12T17:02:33.000Z', '2022-02-12T17:03:59.000Z', '2022-02-12T17:36:18.000Z', '2022-02-12T17:36:48.000Z', '2022-02-12T17:37:22.000Z', '2022-02-12T17:37:45.000Z', '2022-02-13T13:00:00.000Z', '2022-02-13T13:49:16.000Z', '2022-02-13T14:00:00.000Z', '2022-03-08T13:00:00.000Z', '2022-04-13T13:00:00.000Z', '2022-05-13T13:00:00.000Z', '2022-06-13T13:00:00.000Z', '2022-07-13T13:00:00.000Z', '2022-08-13T13:00:00.000Z', '2022-09-13T13:00:00.000Z', '2022-10-13T13:00:00.000Z', '2022-11-13T14:00:00.000Z', '2022-12-13T14:00:00.000Z', '2023-01-13T14:00:00.000Z', '2023-02-13T14:00:00.000Z', '2023-03-13T13:00:00.000Z', '2023-04-13T13:00:00.000Z', '2023-05-13T13:00:00.000Z', '2023-06-13T13:00:00.000Z', '2023-07-13T13:00:00.000Z', '2023-08-13T13:00:00.000Z', '2023-09-13T13:00:00.000Z', '2023-10-13T13:00:00.000Z', '2023-11-13T14:00:00.000Z', '2023-12-13T14:00:00.000Z', '2024-01-13T14:00:00.000Z', ]; export const isWithin5Days = () => { const today = new Date(); const futureDatesWithToday = rotaSchedules.map((date) => ({ date, diff: Math.abs(new Date(date).getTime() - today.getTime()), })); const sortedFutureDatesWithToday = futureDatesWithToday.sort( (a, b) => a.diff - b.diff, ); const nearestFutureDate = sortedFutureDatesWithToday[0].date; const diff = Math.abs( new Date(nearestFutureDate).getTime() - today.getTime(), ); return { nearestFutureDate, isWithin5Days: diff < 5 * 24 * 60 * 60 * 1000, }; };Antes de mapear rotaSchedules , primero debe eliminar todas las fechas que están en el pasado. Para hacerlo, debes escribir algo como esto.
const futureDatesWithToday = rotaSchedules .filter((date) => new Date(date).getTime() - today.getTime() > 0) .map((date) => ({ date, diff: Math.abs(new Date(date).getTime() - today.getTime()), }));