我们正在使用Datatables终极日期/时间排序插件(https://datatables.net/blog/2014-12-18)来尝试对日期列进行排序,但没有任何运气可以让它以正确的格式正确排序日期。页面加载时,将运行以下脚本:
//sets the date format for datatables for sorting purposes
//reference: https://datatables.net/blog/2014-12-18
$.fn.dataTable.moment( 'M/D/YYYY' );
/* Datatables */
$('.datatable').DataTable({
language : {
search : "_INPUT_",
searchPlaceholder : "Search...",
paginate : {
"next" : '<i class="fa fa-chevron-right"></i>',
"previous" : '<i class="fa fa-chevron-left"></i>'
}
},
responsive : {
details : {
display : $.fn.dataTable.Responsive.display.childRowImmediate,
type : 'column'
}
},
order : [0, 'desc'],
//date sorting
columnDefs:
{
targets: 'date_sortable',
render: function ( data, type, full, meta ) {
if(type === 'display'){
if(data){
var mDate = moment(data);
data = (mDate && mDate.isValid()) ? mDate.format("M/D/YYYY") : "";
console.log('rewrote data to ' + data);
}
}
console.log('date_sortable rendered');
return data;
}
}
});
根据Datatables文档和我在此SO帖子(DataTables Ultimate date / time sorting plug-in not working with Intl formats)上找到的详细信息,我在我的HTML中的date_sortable
元素中添加了<th />
作为类名,但是看起来render
函数没有被调用,因为我的console.log[...]
条目从不运行。我可以在生成的HTML中看到该类在我的<th />
元素上,并且显示的日期格式正确('n/j/Y'
,在PHP中)所以我完全失去了。
所有内容都设置正确,所以这里有任何提示/指示?日期排序本质上似乎是相当随机的,条目的日期如2016年6月6日显示在中间(见截图),这根本没有意义。
我会说这张表显示约2,055条记录,所以它可能是一个表演的东西吗?这当前没有加载API调用,因此所有记录都作为单个文件在生成的HTML中。
答案 0 :(得分:0)
你能看一下数据表中未移位的函数吗?
// Add type detection
types.detect.unshift( function ( d ) {
return moment( d, format, locale, true ).isValid() ?
'moment-'+format :
null;
} );
如果是这种情况,你应该使用:
$.fn.dataTable.moment('YYYY-M-D');
答案 1 :(得分:0)
请尝试这个小提琴(这适用于您的日期格式):
`http://jsfiddle.net/Marouen/9qdj53am`
希望这会有所帮助。