如何过滤 ngTable 中的日期?

How to filter date in 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;
    }
})

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

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

必须改成这样:

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

Here 是工作 plunkr。