两个日期之间的自定义过滤

时间:2017-09-25 05:15:51

标签: javascript jquery css angularjs wordpress

我正在尝试过滤两个日期之间的数据。我试图解决它,但我无法完成它。任何人都可以帮助我吗?

我的HTML:

<input type="date" ng-model="from_date">
<input type="date" ng-model="to_date">

我的重复:

<tr ng-repeat="item in outlets | dateRange:from_date:to_date">
    <td>{{ item.offerID }}</td>
    <td>{{ parseDate(item.startDate) | date:'yyyy-MM-dd' }}</td>

我的剧本:

 app.filter('dateRange', function () {
    return function (items, fromDate, toDate) {
        var filtered = [];
        console.log(fromDate, toDate);
        var from_date = Date.parse(fromDate);
        var to_date = Date.parse(toDate);
        angular.forEach(items, function (item) {
            if (item.startDate > from_date && item.startDate < to_date) {
                filtered.push(item);
            }
        });
        return filtered;
    };
});
来自服务器的jason数据:

{
"offerID": "1"
, "merchant": "Rifa Ladies Salon"
, "outelt": "Rifa Ladies Salon Business Bay"
, "offer": "Rifa Ladies Salon- Offer 1"
, "offerStatus": "LIVE"
, "startDate": "2016-07-12"}

1 个答案:

答案 0 :(得分:2)

您正在通过Date.parse进行比较,但是在您的过滤器比较中:

if (item.startDate > from_date && item.startDate < to_date) {

item.startDate 是&#39; YYYY-MM-DD&#39; 格式, from_date to_date < / strong>是时间戳由Date.parse(),

组成

所以你只需要选择是否使用Date.parse()?这是你的修复:

if (Date.parse(item.startDate) > from_date && Date.parse(item.startDate) < to_date) {
}

完整过滤器:

app.filter('dateRange', function () {
    return function (items, fromDate, toDate) {
        var filtered = [];
        var from_date = Date.parse(fromDate);
        var to_date = Date.parse(toDate);
        if (!to_date || !from_date) {
            return items;
        }
        angular.forEach(items, function (item) {
            if (Date.parse(item.startDate) > from_date && Date.parse(item.startDate) < to_date) {
                filtered.push(item);
            }
        });
        return filtered;
    };
});

工作小提琴:http://plnkr.co/edit/SPnN4wptw1Sltsp1lawD?p=preview