如何在ngTable中过滤日期?

时间:2015-10-28 17:46:28

标签: angularjs ngtable

我正在尝试根据给定格式d MMM yyyy HH:mm:ss过滤ngTable中的日期。我关注this answer并创建了自定义过滤器,但它不采用给定的格式d MMM, yyyy

如何过滤ngTable以过滤给定格式的日期?这是我的plunker

ngTable

<td data-title="'Start Date'" class="text-center" header-class="text-left" filter="{ 'start_date': 'text' }" sortable="'type'">{{item.start_date| date: 'd MMM yyyy HH:mm:ss'}}</td>
        <td data-title="'End Date'" class="text-center" header-class="text-left" filter="{ 'end_date': 'text' }" sortable="'type'">{{item.end_date| date: 'd MMM yyyy HH:mm:ss'}}</td>

自定义过滤器

filter('customUserDateFilter', function($filter) {
    return function(values, dateString) {
        var filtered = [];
        if (typeof values != 'undefined' && typeof dateString != 'undefined') {
            angular.forEach(values, function(value) {
                var source = ($filter('date')(value.start_date)).toLowerCase();
                var temp = dateString.toLowerCase();
                //if ($filter('date')(value.start_date).indexOf(dateString) >= 0) {
                //if (temp.indexOf(" ") >=0)
                    //debugger;
                if (source.indexOf(temp) >= 0) {
                    filtered.push(value);
                }
            });
        }
        return filtered;
    }
})

1 个答案:

答案 0 :(得分:1)

更改日期格式时必须小心。这是因为过滤器格式化日期必须与表中显示的格式相同,以确保正确的功能:

var source = ($filter('date')(value.start_date)).toLowerCase();

必须更改为:

var source = ($filter('date')(value.start_date, 'd MMM yyyy HH:mm:ss')).toLowerCase();

Here是工作人员。