Tengo una matriz de la siguiente manera:
data = [ { "startDate": "2021-08-18T00:00:04.498059" "endDate": "2021-08-19T00:00:04.4962889" }, { "startDate": "2021-08-18T00:00:04.498059" "endDate": "2021-08-19T00:00:04.4962889" } ] newArray = []; this.data.foreach(element => { if((element.startDate - element.endDate) > 7) { this.newArray.push(element); } })Quiero recorrer la matriz anterior y verificar si la diferencia entre startDate y endDate es mayor a 7 días para cualquier elemento, luego empujar ese elemento a una nueva matriz.
Debido al formato de fecha, no sé si mi enfoque es correcto o no. ¿Cómo puedo hacer esto correctamente?
Lógica de JavaScript simple.
Lógica para (1000 * 60 * 60 * 24) => 1000 ms = 1 segundo, 60 segundos = 1 minuto, 60 minutos = 1 hora, 24 horas = 1 día.
const data = [ { "startDate": "2021-08-18T00:00:04.498059", "endDate": "2021-08-19T00:00:04.4962889" }, { "startDate": "2021-08-18T00:00:04.498059", "endDate": "2021-08-26T00:00:04.4962889" }, { "startDate": "2021-08-18T00:00:04.498059", "endDate": "2021-08-19T00:00:04.4962889" } ]; const newArray = []; data.forEach(element => { const diffTime = new Date(element.endDate) - new Date(element.startDate); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); if (diffDays > 7) { newArray.push(element); } }); console.log(newArray);Creo que este es el que buscas:
let data = [ { startDate: "2021-08-18T00:00:04.498059", endDate: "2021-08-19T00:00:04.4962889", }, { startDate: "2021-08-11T00:00:04.498059", endDate: "2021-08-19T00:00:04.4962889", } ] let newArray = []; data.forEach(element => { let start = new Date(element.startDate) let end = new Date(element.endDate) if((end-start)/1000/60/60/24 > 7) newArray.push(element); }) console.log(newArray)const data = [ { "startDate": "2021-08-18T00:00:04.498059", "endDate": "2021-08-19T00:00:04.4962889" }, { "startDate": "2021-08-18T00:00:04.498059", "endDate": "2021-08-19T00:00:04.4962889" } ] const newData = []; data.forEach(element => { const startDate = new Date(element.startDate); const endDate = new Date(element.endDate); const difference = endDate.getTime() - startDate.getTime(); if (difference > 604800000) { newData.push(element); } } ); console.log(newData);