我正在尝试根据给定格式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;
}
})
答案 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是工作人员。