2012-03-05 86 views
2

我正在使用JQuery tablesorter插件。該表有一列顯示格式爲05 Mar 2012的日期。該tablesorter插件似乎把這個列文本,因爲它的順序排序,排序日期字段與tablesorter

  • 2012年3月5日
  • 2012年1月6日
  • 2012年12月7日

我如何排序這些按照時間順序排列?

回答

3

將日期字符串解析爲日期,然後將其轉換爲毫秒。讓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時遇到問題。

0

有不在一段時間內使用tablesorter,但我似乎記得與英國日期有類似的問題。

您可以使用您的自定義日期格式將dateformat參數添加到tablesorter插件。

dateFormat: 'dd MMM yyyy' 
+0

我試過了,但沒有區別。我是否需要以某種方式指出哪些列包含日期? – 2012-03-05 15:28:20

3

您還可以在日期之前以數字格式(yyyymmdd)添加隱藏的span標籤。該文本將首先出現並用於排序,但它將被隱藏起來,只顯示您想要的格式。

<td><span style="display:none">20130923</span>23rd September 2013</td> 
+0

這不適合我。但我添加了一個班級,而不是與這些屬性:位置:絕對; \t top:0px; \t知名度:隱藏;它仍然允許分揀機讀取文本,而不顯示給最終用戶。 – user417669 2013-12-20 03:03:28

+0

這是一個不錯的簡單解決方案+1 – karel 2016-06-03 20:29:15