我正在使用JQuery tablesorter插件。該表有一列顯示格式爲05 Mar 2012
的日期。該tablesorter插件似乎把這個列文本,因爲它的順序排序,排序日期字段與tablesorter
- 2012年3月5日
- 2012年1月6日
- 2012年12月7日
我如何排序這些按照時間順序排列?
我正在使用JQuery tablesorter插件。該表有一列顯示格式爲05 Mar 2012
的日期。該tablesorter插件似乎把這個列文本,因爲它的順序排序,排序日期字段與tablesorter
我如何排序這些按照時間順序排列?
將日期字符串解析爲日期,然後將其轉換爲毫秒。讓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時遇到問題。
您將需要使用addParser方法並創建一個將字符串轉換爲日期對象的解析器。
遵循例如在插件網站 http://tablesorter.com/docs/example-parsers.html
如果需要的日期解析器:
編輯:您的日期格式輕鬆轉換圖所示:
console.log(new Date('05 Mar 2012'))// logs proper date object
有不在一段時間內使用tablesorter,但我似乎記得與英國日期有類似的問題。
您可以使用您的自定義日期格式將dateformat參數添加到tablesorter插件。
dateFormat: 'dd MMM yyyy'
您還可以在日期之前以數字格式(yyyymmdd)添加隱藏的span標籤。該文本將首先出現並用於排序,但它將被隱藏起來,只顯示您想要的格式。
<td><span style="display:none">20130923</span>23rd September 2013</td>
這不適合我。但我添加了一個班級,而不是與這些屬性:位置:絕對; \t top:0px; \t知名度:隱藏;它仍然允許分揀機讀取文本,而不顯示給最終用戶。 – user417669 2013-12-20 03:03:28
這是一個不錯的簡單解決方案+1 – karel 2016-06-03 20:29:15
我試過了,但沒有區別。我是否需要以某種方式指出哪些列包含日期? – 2012-03-05 15:28:20