真的遇到了大问题。我需要对日期列进行排序。但日期格式为`mm / dd / yyyy hh:mmAM / PM。我试过
jQuery.fn.dataTableExt.oSort['uk_date-asc'] = function(a,b) {
var ukDatea = $(a).text().split('/');
var ukDateb = $(b).text().split('/');
var x = (ukDatea[2] + ukDatea[0] + ukDatea[1]) * 1;
var y = (ukDateb[2] + ukDateb[0] + ukDateb[1]) * 1;
console.log("here");
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};
jQuery.fn.dataTableExt.oSort['uk_date-desc'] = function(a,b) {
var ukDatea = $(a).text().split('/');
var ukDateb = $(b).text().split('/');
var x = (ukDatea[2] + ukDatea[0] + ukDatea[1]) * 1;
var y = (ukDateb[2] + ukDateb[0] + ukDateb[1]) * 1;
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
但现在我不知道如何包括时间。请伙计们帮助我。
答案 0 :(得分:4)
如果格式为mm/dd/yyyy hh:mmAM/PM
,则此格式需要符合Date.parse()
标准的格式才能在分钟mm
和AM
/之间插入空格PM
。因此,如果您这样做,您可以使用Date.parse()
中返回的值来比较日期,包括时间:
jQuery.fn.dataTableExt.oSort['uk_date-pre'] = function(a) {
a = a.slice(0,-2)+' '+a.slice(-2);
var date = Date.parse(a);
return typeof date === 'number' ? date : -1;
}
jQuery.fn.dataTableExt.oSort['uk_date-asc'] = function(a,b) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
}
jQuery.fn.dataTableExt.oSort['uk_date-desc'] = function(a,b) {
return ((a < b) ? -1 : ((a > b) ? -1 : 0));
}
参见演示 - &gt;的 http://jsfiddle.net/ttfrxmsk/ 强>
演示使用以下时间戳:
01/27/2011 10:20 PM
01/27/2011 10:19 PM
01/27/2011 10:19上午 2014年10月13日下午4:10
04/12/2011 11:20 AM 2013年10月13日下午4:20
08/01/2012 10:20 PM
07/10/2014 7:00 AM 08/01/2012 10:20 PM
07/10/2014 7:00 AM
答案 1 :(得分:0)
我必须使用 mm/dd/yyyy 格式进行格式化和排序,所以我不得不做一些更改...
$("#tblSearch").DataTable({
"processing": true, // for show progress bar
"filter": false, // this is for disable filter (search box)
"orderMulti": false, // for disable multiple column at once
"bDestroy": true,
"order": [[1, "asc"]],
data: data,
"columns": [
],
"language": {
"emptyTable": "We couldn't find any result for the search"
},
"columnDefs": [
{
data: "date", "sType": "date-mmddyyyy", className: 'text-center', targets: [0]
, "mRender": function (d, type, full) {
d = new Date(d);
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2)
month = '0' + month;
if (day.length < 2)
day = '0' + day;
return [month, day, year].join('/');
} }
],
});
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
"date-mmddyyyy-pre": function (a) {
var dateFormat = a.split('/');
return (dateFormat[2] + dateFormat[0] + dateFormat[1]) * 1;
},
"date-mmddyyyy-asc": function (a, b) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"date-mmddyyyy-desc": function (a, b) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
});