I have a array as follows:
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);
}
})
I want to traverse the above array and check if difference between startDate and endDate is greater than 7 days for any element, than push that element to a new array.
Because of the date format I don't know my approach is correct or not. How can I do this correctly?
Simple JavaScript logic.
Logic for (1000 * 60 * 60 * 24) => 1000 ms = 1 second, 60 seconds = 1 minute, 60 minute = 1 hour, 24 hours = 1 day.
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);
I think this is the one you are looking for:
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);