Какую библиотеку нужно подключить к js, чтобы сортировались даты

У меня указана это http://tristen.ca/tablesort/src/sorts/tablesort.date.js . Но из-за того что там месяца на английском, а у меня на русском, ничего не сортируется.

    <script src="http://tristen.ca/tablesort/src/sorts/tablesort.number.js"></script>
    <script src="http://tristen.ca/tablesort/src/sorts/tablesort.date.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
    new Tablesort(document.getElementById('table-id'));
});

я так и не увидел возможный формат русских дат, но немного подшаманил скрипт tablesort.date.js:

    // Basic dates in dd/mm/yy or dd-mm-yy format.
// Years can be 4 digits. Days and Months can be 1 or 2 digits.
(function(){
  var parseDate = function(date) {
    date = date.replace(/\-/g, '/');
    date = date.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2,4})/, '$3-$2-$1'); // format before getTime
    
    date = date.replace(/января/i, 'Jan');
    date = date.replace(/февраля/i, 'Feb');
    date = date.replace(/марта/i, 'Mar');
    date = date.replace(/апреля/i, 'Apr');
    date = date.replace(/мая/i, 'May');
    date = date.replace(/июня/i, 'Jun');
    date = date.replace(/июля/i, 'Jul');
    date = date.replace(/августа/i, 'Aug');
    date = date.replace(/сентября/i, 'Sep');
    date = date.replace(/октября/i, 'Oct');
    date = date.replace(/ноября/i, 'Nov');
    date = date.replace(/декабря/i, 'Dec');
    date = date.replace(/г\. /i, '');
    return new Date(date).getTime() || -1;
  };

  Tablesort.extend('date', function(item) {
    return (
      item.search(/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\.?\,?\s*/i) !== -1 ||
      item.search(/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/) !== -1 ||
      item.search(/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i) !== -1 ||
      item.search(/(Января|Февраля|Марта|Апреля|Мая|Июня|Июля|Августа|Сентября|Октября|Ноября|Декабря)/i) !== -1
    ) && !isNaN(parseDate(item));
  }, function(a, b) {
    a = a.toLowerCase();
    b = b.toLowerCase();

    return parseDate(b) - parseDate(a);
  });
}());

у меня даты в которых встречаются полные русские именования месяцев (типа 15 Января 1990) теперь сортирует вроде(мало тестил) верно. Проверьте на своем датасете и, возможно, в столбце даты у вас другой формат. Поправил под формат типа 01 Января 1990 г. 11:00.

Вернуться на верх