Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   DataTables - некорректная сортировка даты формата dd-mm-yyyy и кириллицы (https://javascript.ru/forum/jquery/76804-datatables-nekorrektnaya-sortirovka-daty-formata-dd-mm-yyyy-i-kirillicy.html)

alex-romanov 15.02.2019 10:03

DataTables - некорректная сортировка даты формата dd-mm-yyyy и кириллицы
 
'DD-MM-YYYY' (10-02-2019)

<script type="text/javascript" src="/resources/js/jquery/datatables.min.js"></script>
    <script type="text/javascript" src="/resources/js/jquery/moment.min.js"></script>
    <script type="text/javascript" src="/resources/js/jquery/datetime-moment.js"></script>


затем перед вызовом плагина указал настройку

$.fn.dataTable.moment( 'DD-MM-YYYY');
 
            $(selectorTable).DataTable({
                paging: true,
       
            });


не сортируется и не ищет дату.

Также не работает сортировка слов из кириллицы или поиск.

Как можно это настроить ?

alex-romanov 15.02.2019 17:48

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

решено

laimas 15.02.2019 17:50

Даты в формате DD-MM-YYYY нельзя сортировать так как результат будет все равно не верным, только в европейском формате YYYY-MM-DD, если сравнивать строковые значения, а лучше сравнивать метки времени.

alex-romanov 15.02.2019 18:10

Цитата:

Сообщение от laimas
Даты в формате DD-MM-YYYY нельзя сортировать так

я проверил даже даты с високосными годами, ошибок не нашел, сортируется по порядку

когда данные отправляются в mysql , они приводятся к формату YYYY-MM-DD.

Сортировка идет на клиентской части, ошибок не нашел.

Может на тысячах записей и появляются такие ошибки, но у меня такой базы нет, проверить не могу

laimas 15.02.2019 18:53

Цитата:

Сообщение от alex-romanov
я проверил даже даты с високосными годами, ошибок не нашел, сортируется по порядку

Не городите ерунды:

alert('12-03-2018' > '05-10-2018')


Это строки, и сравниваться они будут не правильно, и если для сортировки не применяется натуральная сортировка, то результат будет неверным.

А так верно:

alert('2018-03-12' > '2018-10-05')


Часовой пояс GMT +3, время: 06:23.