Php и название месяца на русском языке
#php, #date
Задача выводить название месяца на русском языке ставится перед разработчиками довольно часто, ведь правильно отформатированная дата значительно улучшает восприятие информации на сайте. В php существует огромный арсенал функций для работы с датой и временем. Функция strftime() позволяет вывести нужный результат с учетом локали. Но что делать, если вам не доступна её настройка?

Настроить локаль может не получиться по разным причинам. Самая распространенная - это ограничения на хостинге или недостаточная квалификация программиста. Тем не менее, это более предпочтительный способ. Как настроить локаль и вывести дату на руccком можно прочитать тут.
Для решения же нашей задачи мы будем использовать функцию date(). Она может не только вернуть название месяца на английском языке, но и вывести его порядковый номер. Именно он нам и пригодится.
Получение порядкового номера месяца с помощью функции date()
Открываем страницу в документации, где описаны варианты форматирования даты и находим раздел, посвященный месяцам. Вспоминаем, что в григорианском календаре месяцы расположены по порядку, начиная с 1 и заканчивая 12. Значит самый подходящий для нас формат - "n".
Давайте попроубем вывести результат:
1 2 3 | <?php echo date('n'); |
Сейчас месяц сентябрь и функция выводит 9. Отлично, теперь нам осталось связать порядковый номер месяца с его названием на русском.
Создаем массив с названиями месяцев на русском
Для этого нужно расположить названия месяцев в массиве так, чтобы январю соответствовал индекс 1 (вы ведь уже знаете, что в массиве элементы считаются с 0). В php это делается очень просто, достаточно присвоить первому элементу нужный номер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $rusMonthNames = [ 1 => 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь', ]; |
Теперь, когда нужный массив создан, мы можем приступать к финальному этапу - создании функции для вывода названия месяца на русском языке.
Функция getRusMonthName()
Эта функция будет принимать порядковый номер месяца и возвращать его название на русском. Вот её код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function getRusMonthName($n) { $rusMonthNames = [ 1 => 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь', ]; return $rusMonthNames[$n]; } |
Теперь мы можем её вызвать:
1 | echo getRusMonthName(date('n')); |