我正在使用JQuery tablesorter插件。该表有一列以05 Mar 2012
格式显示日期。 tablesorter插件似乎将此列视为文本,因为它按顺序对其进行排序
我如何按时间顺序对这些日期进行排序?
答案 0 :(得分:3)
将日期字符串解析为Date,然后将其转换为毫秒。让tablesorter将列排序为数字。
$.tablesorter.addParser({
id: 'my_date_column',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
var timeInMillis = new Date.parse(s);
return timeInMillis;
},
// set type, either numeric or text
type: 'numeric'
});
$(function() {
$("table").tablesorter({
headers: {
6: { // Change this to your column position
sorter:'my_date_column'
}
}
});
});
如果您在使用Date.parse时遇到问题see my answer to this question。
答案 1 :(得分:3)
您还可以在日期之前以数字格式(yyyymmdd)添加隐藏的范围标记。此文本将首先出现并用于排序,但它将隐藏在视线之外,仅显示您想要的格式。
<td><span style="display:none">20130923</span>23rd September 2013</td>
答案 2 :(得分:1)
您需要使用addParser方法并创建一个将字符串转换为日期对象的解析器。
关注插件网站上的示例 http://tablesorter.com/docs/example-parsers.html
如果需要日期解析器:
编辑:您的日期可以轻松转换为显示的格式:
console.log(new Date('05 Mar 2012'))// logs proper date object
答案 3 :(得分:0)
有一段时间没有使用过tableorter,但我似乎记得在英国约会时有类似的问题。
您可以使用自定义日期格式将dateformat参数添加到tablesorter插件。
dateFormat: 'dd MMM yyyy'