我正在尝试排序一个像2009-12-17 23:59:59.0这样的列的表。
我在下面使用排序
我在下面使用排序
$(document).ready(function() { $("#dataTable").tablesorter(); } );
但它不适用于yyyy-mm-dd格式的日期。
任何人都可以建议如何应用此格式进行排序?
解决方法
正确的做法是为自定义格式添加自己的解析器。
检查这一点,以了解如何工作。
jQuery Tablesorter: Add your own parser
然后查看tablesorter源(搜索uslongdate,shortdate,然后观察日期格式的解析器如何在tablesorter内部完成。现在为您的特定日期格式构建一个类似的解析器。
这应该适合你的喜好
ts.addParser({ id: "customDate",is: function(s) { //return false; //use the above line if you don't want table sorter to auto detected this parser //else use the below line. //attention: doesn't check for invalid stuff //2009-77-77 77:77:77.0 would also be matched //if that doesn't suit you alter the regex to be more restrictive return /\d{1,4}-\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" });
现在只需将其应用于您具有此格式的列(例如,假定您的自定义日期所在的列位于第7列。(6表示列7,因为列的数组为零)
$(function() { $("table").tablesorter({ headers: { 6: { sorter:'customDate' } } }); });