Estoy recibiendo una respuesta de mi api donde se da start_time . Quiero extraer la identificación de json cuya próxima fecha es la más cercana a la fecha actual, que no incluye fechas pasadas.
Un ejemplo de mi respuesta json:
[ { "expected": { "id": 1, "start_time": "2021-10-01T06:35:00.659Z" } }, { "expected": { "id": 2, "start_time": "2021-11-30T17:08:29.307Z" } }, { "expected": { "id": 3, "start_time": "2021-11-30T09:49:18.574Z" } }, { "expected": { "id": 4, "start_time": "2021-09-30T15:08:29.303Z" } }, ]Aquí, lo que he hecho hasta ahora es encontrar la fecha y hora más cercana a la fecha y hora de hoy:
const today = new Date().getTime(); const result = response.sort((a: any, b: any) => { const diffA = new Date(a.expected.shift_start_time).getTime() - today; const diffB = new Date(b.expected.shift_start_time).getTime() - today; return diffA - diffB; })[0]; al usar esto, obtengo la id de la fecha y hora más cercana a partir de hoy. Pero el result a veces también incluye una start_time de inicio de una fecha pasada si es la más cercana a la fecha de hoy.
Quiero obtener una id que no incluya start_time de fechas pasadas. No puedo obtener la lógica de cómo se puede hacer
Otro enfoque que hice:
var today = moment(); for (let index = 0; index < response.length; index++) { const element = response[index].start_time; var dateDiff = today.diff(element, 'days') * -1; if (dateDiff >= 0) { console.log('>>d>>', dateDiff); } }consola:
>>d>> -0 >>d>> 1 >>d>> -0Desde aquí, ¿cómo puedo devolver la respuesta requerida? por favor ayuda
Tal vez no ordene la lista en absoluto. Dado que solo necesita una fecha y hora que sea la más cercana a la fecha actual, ordenar la 'lista' completa no parece ser la forma óptima de obtener su respuesta. Puede usar el siguiente enfoque,