如何根据时间戳过滤对象数组 [英] how to filter array of objects based upon timestamp
问题描述
我有1000多个对象数组,数组中的每个对象都包含日期和时间字段.如下所示,此记录每秒钟插入一次DB.在这里,我想根据当前日期+小时+秒获得7天的记录,包括分钟和秒.
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 below. Here I want get pas 7 days record including minutes and seconds based upon current date+hours+seconds.
示例:
[{
"date": "11/25/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
}]
请让我知道如何使用JS或jquery做到这一点
Please let me know how can I do this by using JS or jquery
推荐答案
您可以使用以下过滤器来实现此目的.
You can use the filter as below to achieve this.
data.filter((d) => {
return new Date(d.date).getTime() >= seventhDay.getTime();
});
在这里,如果您的date
数据类型已经是Date
,则无需再次转换为日期new Date(d.date)
.
Here, if your date
data type is Date
already, you don't need to convert to date again new Date(d.date)
.
此外,它也可以在没有getTime()
的情况下工作,如下所示.
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);
这篇关于如何根据时间戳过滤对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!