我现在已经有一段时间了。我的日期时间格式为dd-mmm-yyyy hh:mm,显示在第6列的tablesorter表中。但我无法正确订购它。
分析器:
$.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";
和tableorter定义:
$(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;
});
});
任何意见都会非常感激,谢谢
答案 0 :(得分:-1)
大多数现代浏览器都知道如何解析日期。
> 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'
});