PHP — сортировка по дате

В данном примере не будет каких-то самописных функций или простыни из кода — сортируем массивы по дате.

Как в PHP выполнить сортировку по дате?

Если вы такой же фанат Битрикса как и я, то знайте — сортировка по дате создания, это всего-навсего сортировка по ID по убыванию :). Тут ничего мудрить не стоит.

Но если всё таки речь про массивы, то один из способов их сортировки на PHP это использование стандартной функции strtotime. Как это работает?

Разберем на таком примере. У нас есть 2 даты, выведем их результат на экран:

$myDate = '20.03.2013 14:26:35';
$myDate2 = '20.03.2013 14:36:36';
echo strtotime($myDate);
echo '
'; echo strtotime($myDate2);

В результате получаем два числа:
1363775195
1363775796
Как видно из результата, мы преобразовали нашу дату в число. Что же это за число и почему функция всегда будет возвращать вам правильный результат? Есть такой стандарт: количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC и именно он позволяет решить эту задачу таким вот способом.

Сортировка должна выдать правильный результат:

$arDate[0] = strtotime('20.03.2013 14:36:36');
$arDate[1] = strtotime('20.03.2013 14:26:35');
sort($arDate, SORT_NUMERIC); // SORT_NUMERIC писать необязательно

Но тут зависит от задачи — где-то нужно сохранить ключи, где-то будет многомерный массив.

ПС решить данную задачу можно несколькими способами и цель этой статьи была исключительно расширить кругозор и посмотреть на даты в PHP под другим углом 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

- Создание сайтов на 1С-Битрикс любой сложности
- Вёрстка макетов Figma, Photoshop, Zeplin
- Поддержка проектов на Битриксе
- Разработка нового функционала для сайта
- Парсинг данных
- Выгрузка из файлов в формате XML, YML, XLS, XLSX, CSV, JSON
- Интеграция по API со сторонними сервисами
и многое другое

E-mail: dmitriyribka@gmail.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *