Какую библиотеку нужно подключить к 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
.