Ранее на моём сайте уже публиковались посты про возможности использования сортируемых таблиц DataTables. Данный инструмент продолжает быть весьма удобным и по сей день в виду актуальности использования табличных данных, а также возможности их сортировки. Ранее не приходилось замечать, но недавно обратил на одну особенность внимание – это сортировка полей с датами.
Дело в том, что DataTables сортирует поля таблицы как строки по умолчанию. Таким образом, если мы используем форматированное представление даты – сортировка становится некорректной.
Проблема, к счастью, решается довольно просто, для корректной сортировки необходимо сообщить js скрипту временную метку timestamp для нужной колонки.
Давайте представим, что у нас есть дата в некотором формате, которая представлена в строковом виде. Получить временную метку из строки с датой в PHP можно таким образом:
$dateStr = '24.09.2025'; $timeStamp = strtotime($dateStr);
Функция strtotime() получает в качестве параметра текстовое представление даты, преобразуя во временную метку в формате Unix. Важно учитывать момент что распознаёт функция текстовые представления названия месяцев только на английском языке.
Добавляем полученное значение в атрибут таблицы data-sort.
echo '<tr>'; echo '<td data-sort="'. $timeStamp .'">'.$dateStr.'</td>'; ...
На практике как правило табличные данные выводятся в цикле. По этой причине в массиве данных для таблицы можно завести отдельное поле которое будет содержать значение временной метки для каждой строки таблицы.