I have more than 1 thousand array of objects and every object inside the array contains date and time fileds. This records are inserted to DB for every seconds as shown be
You can use the filter as below to achieve this.
data.filter((d) => {
return new Date(d.date).getTime() >= seventhDay.getTime();
});
Here, if your date
data type is Date
already, you don't need to convert to date again new Date(d.date)
.
Also, it will work without getTime()
as below.
return new Date(d.date) >= seventhDay;
var data=[{"date":"11/20/2016 08:45:58","energy":29940913188,"power":6783,"time":217781102},{"date":"11/25/2016 08:46:01","energy":29940913267,"power":6792,"time":217781105},{"date":"11/25/2016 08:46:02","energy":29940913318,"power":6791,"time":217781107},{"date":"11/25/2016 08:46:04","energy":29940913344,"power":6797,"time":217781108},{"date":"11/25/2016 08:46:05","energy":29940913396,"power":6816,"time":217781110},{"date":"11/25/2016 08:46:07","energy":29940913421,"power":6798,"time":217781111},{"date":"11/21/2016 08:46:08","energy":29940913473,"power":6804,"time":217781113}]
var seventhDay = new Date();
seventhDay.setDate(seventhDay.getDate() - 7);
var filteredData = data.filter((d) => {
return new Date(d.date).getTime() >= seventhDay.getTime();
});
console.log(filteredData);
You could so something like this.
var input = [{
"date": "11/22/2016 08:45:58",
"energy": 29940913188,
"power": 6783,
"time": 217781102
}, {
"date": "11/25/2016 08:46:01",
"energy": 29940913267,
"power": 6792,
"time": 217781105
}, {
"date": "11/25/2016 08:46:02",
"energy": 29940913318,
"power": 6791,
"time": 217781107
}, {
"date": "11/25/2016 08:46:04",
"energy": 29940913344,
"power": 6797,
"time": 217781108
}, {
"date": "11/25/2016 08:46:05",
"energy": 29940913396,
"power": 6816,
"time": 217781110
}, {
"date": "11/25/2016 08:46:07",
"energy": 29940913421,
"power": 6798,
"time": 217781111
}, {
"date": "11/25/2016 08:46:08",
"energy": 29940913473,
"power": 6804,
"time": 217781113
}];
function filter(format) {
return input.filter((obj) => {
return obj.date.indexOf(format) !== -1;
});
}
var last7Days = getLast7Days();
var results = last7Days.map((date) => {
return filter(date);
}).filter((result) => {
return result.length != 0
});
console.log(...results);
function pad(number) {
if (number < 10) {
return '0' + number;
}
return number;
}
function getLast7Days() {
var output = [];
for (var idx = 0; idx < 7; idx++) {
var date = new Date();
var last = new Date(date.getTime() - ((idx + 1) * 24 * 60 * 60 * 1000));
var day = pad(last.getDate());
var month = pad(last.getMonth() + 1);
var year = last.getFullYear();
output.push(month + "/" + day + "/" + year);
}
console.log(output);
return output;
}