我已经为此打破了很长一段时间。我有格式为 dd-mmm-yyyy hh:mm 的日期时间,显示在第 6 列的表排序器表中。但我无法让它正确订购。
解析 器:
$.tablesorter.addParser({
id: 'dayMonthYearHHMM',
is: function(s) {
return false;
},
format: function(s, table) {
var date = s.match(/^([0-9]|[0-9][0-9])-([a-zA-Z]{3})-([0-9][0-9][0-9][0-9])s([0-1]?[0-9]|2?[0-3]):([0-5]d)$/);
var m = monthNames[date[2]];
var d = String(date[1]);
if (d.length == 1) {d = "0" + d;}
var y = date[3];
return parseInt(y + m + d + date[4] + date[5]);
},
type: 'numeric'
});
var monthNames = {};
monthNames["Jan"] = "01";
monthNames["Feb"] = "02";
monthNames["Mar"] = "03";
monthNames["Apr"] = "04";
monthNames["May"] = "05";
monthNames["Jun"] = "06";
monthNames["Jul"] = "07";
monthNames["Aug"] = "08";
monthNames["Sep"] = "09";
monthNames["Oct"] = "10";
monthNames["Nov"] = "11";
monthNames["Dec"] = "12";
以及表排序器定义:
$(function() {
$('.tablesorter-childRow td').hide();
$(".tablesorter")
.tablesorter({
theme : 'blue',
sortList: [[5, 1]],
widgets: ["zebra"],
headers: {
5: { sorter: "dayMonthYearHHMM" }
},
cssChildRow: "tablesorter-childRow"
})
.tablesorterPager({
container: $("#pager"),
size: 20,
savePages: false,
positionFixed: false
});
$('.tablesorter').delegate('.toggle', 'click' ,function(){
$(this).closest('tr').nextUntil('tr:not(.tablesorter-childRow)').find('td').toggle();
return false;
});
});
任何意见将不胜感激,谢谢
大多数现代浏览器都知道如何解析日期。
> new Date('31 Dec 2017 12:00:00')
//=> Sun Dec 31 2017 12:00:00 GMT-0600 (Central Standard Time)
为了确保它在更多浏览器 (MS Edge( 中工作,您需要用空格替换日期部分之间的任何额外字符:
$.tablesorter.addParser({
id: 'dayMonthYearHHMM',
is: function(s) {
return false;
},
format: function(s, table) {
var date = new Date(s.replace(/[-., ]+/g, ' '));
return date instanceof Date && isFinite(date) ? date.getTime() : s;
},
type: 'numeric'
});