我正在数据表中实现日期范围过滤器,当以YYYY-MM-DD格式显示列日期时,过滤器可以正常工作,但是我需要以DD-MM-YYYY格式显示列,因此我应用了时刻。
在数据表中使用矩的回调函数:
{ targets : [8],
render : function (data, type, row) {
return moment(data).format('DD/MM/YYYY')
}
},
结果,我看到第二天显示在列上。下图。 我想按日期过滤,然后按以下格式对列进行排序:DD / MM / YYYY
显然,我在datepicker过滤器中选择了第10天,它在表格上显示了第11天。
$(document).ready(function(){
$.fn.dataTable.ext.search.push(
function (settings, data, dataIndex) {
var fecha_inicio = $('#fecha_inicio').datepicker("getDate");
// alert(fecha_inicio);
var fecha_fin = $('#fecha_fin').datepicker("getDate");
var arr = data[8].split('/').reverse().join('-');
// alert(arr);
// var temp = arr[0] +'-'+ arr[1] +'-'+arr[2];
var startDate = new Date(arr);
startDate.setHours(0,0,0,0);
// alert(startDate);
if (fecha_inicio == null && fecha_fin == null) { return true;}
if (fecha_inicio == null && startDate <= fecha_fin) { return true;}
if(fecha_fin == null && startDate >= fecha_inicio) { return true;}
if (startDate <= fecha_fin && startDate >= fecha_inicio) { return true;}
return false;
}
);
如果我取出回调代码,则该列将正确显示,但日期格式除外。
谢谢。
答案 0 :(得分:0)
例如,您可能想使用type
参数
render:function(data,type,row,meta){
if(type=='display'){
return moment(data).format('DD/MM/YYYY');
}
if(type=='filter'){
//there is an example, show how to work, you can use whatever you want time format
return moment(data).format('YYYY/MM/DD');
}
if(type=='sort'){
//maybe there is timestamp format
return data;
}
return data;
}
有关更多详细信息,请查看https://datatables.net/reference/option/columns.render function render( data, type, row, meta )
部分