DataTables правильно сортирует даты только в формате YYYY-MM-DD
.Все остальные форматы они сортируют как string
.
Поскольку я не фанат добавления библиотеки / плагина для каждой функциональности в мои проекты, я пытался решить ее самостоятельно.
DataTables использует функцию Date.parse()
, чтобы «понять» дату и отсортировать ее.(согласно https://datatables.net/blog/2014-12-18). Поэтому я решил переопределить эту функцию и изменить ее так, чтобы она «понимала» также другие форматы даты.
Я добавил этот JS в свой код:
let origFunction = Date.parse;
Date.parse = function(str) {
// I want to parse this date format: 27.01.2018
if (str.indexOf('.') > 0) {
str = convertDateToISO(str); // my function translates date into 2018-01-27
}
return origFunction(str);
};
Когда я проверяю это в консоли браузера, Date.parse
прекрасно работает с моим форматом даты, но DataTables продолжают сортировать мои европейские даты в виде строк.
Есть идеи, что я делаю неправильно?Или это можно сделать таким образом?
решено:
В конце концов, похоже, что самый простой способ - подключить плагин "Moment.js", как описаноздесь: https://datatables.net/blog/2014-12-18#Operation Но, хотя в моем вопросе было требование "нет плагинов", я тоже принимаю ответ @billynoah как решение.