Angular 2 : How to filter records between two dates?
Thanks all for your answers thats help me out. This is the solution of my problem
{ "id":1, "name":"Jack", "date":"01-06-2017"},{ "id":2, "name":"Allen", "date":"07-08-2017"},{ "id":3, "name":"Annie", "date":"22-11-2017"},let start = "01-02-2017;let end = "06-07-2017";let.selectedMembers = this.members.filter(m => new Date(m.date) >= new Date(startDate) && new Date(m.date) <= new Date(endDate));console.log(selectedMembers);
Thanks all your answers, thats help me to figure out this :) ..
u need first to transform the dates from string to Date type in order to compare them properly then do something like:
let members: any[] = [{ "id": 1, "name": "Jack", "date": "01-06-2017" // this should be of object Date() }, { "id": 2, "name": "Allen", "date": "07-08-2017" // this should be of object Date() }, { "id": 3, "name": "Annie", "date": "22-11-2017" // this should be of object Date() }]; let start = "01-02-2017; // this should be of object Date() let end = "06-07-2017"; // this should be of object Date() let selectedMembers = members.filter(m => { if ( m.date > start && m.date < end) // or you can cast here to Date() return m; }); console.log(selectedMembers);
To sort dates stored as strings, you should use an ISO based format:https://es.wikipedia.org/wiki/ISO_8601
The line you wrote will work with dates like that:
{ "id":1, "name":"Jack", "date":"2017-06-01" }, { "id":2, "name":"Allen", "date":"2017-08-07" }, { "id":3, "name":"Annie", "date":"2017-11-22" }
If not, you have to parse the strings to date object and use them in the comparison. Something like this:
let startDate = new Date('2017-05-01'); let endDate = new Date('2017-09-01); let selectedMembers = this.members.filter(m => new Date(m.date) > startDate && new Date(m.date) < endDate);