Filter by date range
by greatCar
HTML
<div ng-app="tst">
<div ng-controller="MyController">
<table>
<tr>
<td>From:<input ng-model="date1" type="text" placeholder="" /></td>
<td>To:<input ng-model="date2" type="text" placeholder="" /></td>
</tr>
<tr ng-repeat="order in orders | myfilter:date1:date2">
<td>{{order.date1 * 1000 | date:'dd-MM-yyyy'}}</td>
<td>{{order.date2 * 1000 | date:'dd-MM-yyyy'}}</td>
</tr>
</table>
</div>
</div>
JavaScript
var nameSpace = angular.module('tst',[]);
nameSpace.controller('MyController', function MyController($scope) {
$scope.date1 = "27-05-2010"
$scope.date2 = "29-07-2015";
$scope.orders = [
{
"date1": 1306487800,
"date2": 1406587800
},
{
"date1": 1196487800,
"date2": 1406597800
}]
});
// parse a date in dd-mm-yyyy format
function parseDate(input) {
var parts = input.split('-');
// Note: months are 0-based
return new Date(parts[2], parts[1]-1, parts[0]);
}
nameSpace.filter("myfilter", function() {
return function(items, from, to) {
// alert(from);
// alert(to);
var df = parseDate(from);
var dt = parseDate(to);
var arrayToReturn = [];
for (var i=0; i<items.length; i++){
var tf = new Date(items[i].date1 * 1000),
tt = new Date(items[i].date2 * 1000);
if (tf > df && tt < dt) {
arrayToReturn.push(items[i]);
}
}
return arrayToReturn;
};
});