2012-03-05 2 views
2

Я использую плагин JQuery tablesorter. Таблица имеет столбец, который показывает даты в формате 05 Mar 2012. TableSorter плагин, кажется, рассматривать этот столбец как текст, так как он сортирует их в порядкесортировать поле даты с tablesorter

  • 05 Mar 2012
  • 6 января 2012
  • +07 Декабрь 2012

Как сортировать эти даты в хронологическом порядке?

ответ

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.

1

Вам нужно будет использовать метод addParser и создать парсер, который преобразует ваш объект на дату.

следовать примеру на сайте плагина http://tablesorter.com/docs/example-parsers.html

Если нужна дата парсер:

http://www.datejs.com/

EDIT: даты легко конвертировать в формат показано:

console.log(new Date('05 Mar 2012'))// logs proper date object 
0

Есть не иногда использовал tablesorter, но я, похоже, помню, что имел аналогичную проблему с датами в Великобритании.

Вы можете добавить параметр dateformat в плагин tablesorter с помощью настраиваемого формата даты.

dateFormat: 'dd MMM yyyy' 
+0

Я пробовал это, но это не имело значения. Нужно ли мне как-то указывать, какие столбцы содержат даты? –

3

Вы также можете добавить скрытый тег span перед своей датой в цифровом формате (yyyymmdd). Этот текст будет первым и будет использоваться для сортировки, но он будет скрыт от поля зрения и отобразит только тот формат, который вы хотите.

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

это не сработало для меня. но я добавил класс в span, с этими свойствами: position: absolute; \t наверху: 0px; \t видимость: hidden ;. Он все еще позволял сортировщику читать текст, не отображая его конечному пользователю. – user417669

+0

Это приятное и простое решение +1 – karel