我试图使用Jquery tablesorter插件来订购像这样的时间...
2014-07-11-02.10.03
所以那是......
YYYY-MM-DD-HH.mi.ss
我已尝试关注之前的帖子(date Sorting Problem with Jquery Tablesorter)并执行以下操作....
$.tablesorter.addParser({
id: "customDate",
is: function(s) {
return /\d{1,4}-\d{1,2}-\d{1,2}-\d{1,2}-\d{1,2}.\d{1,2}\.\d+/.test(s);
},
format: function(s) {
s = s.replace(/\-/g," ");
s = s.replace(/:/g," ");
s = s.replace(/\./g," ");
s = s.split(" ");
return $.tablesorter.formatFloat(new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]).getTime()+parseInt(s[6]));
},
type: "numeric"
});
$("#tabHistoryBackups").tablesorter({
sortList: [[3,1],[0,0]],
stripeRowsOnStartUp: true
});
但它不起作用,我无法理解我可能在哪里出错。有人可以帮我解决这个问题并告诉我我的情况有什么问题吗?这是我的表格。
感谢
答案 0 :(得分:1)
您的日期时间值不包含毫秒数,因此您需要相应地更新RegEx:
is: function(s) {
return /\d{1,4}-\d{1,2}-\d{1,2}-\d{1,2}\.d{1,2}\.\d{1,2}/.test(s);
},
您还可能会注意到,.
已被转义(\.
),意为文字.
。这是因为,除非它已被转义或成为字符类的一部分,.
是一个RegEx元字符,意思是“任何东西”。
您还需要更新format
方法以忽略毫秒,因为您的值不包含它们:
format: function(s) {
s = s.replace(/\-/g, " ");
s = s.replace(/\./g, " ");
s = s.split(" ");
return $.tablesorter.formatFloat(new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]).getTime());
}