15 сен 2020

Php и название месяца на русском языке

#php, #date

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

Php и название месяца на русском языке

Настроить локаль может не получиться по разным причинам. Самая распространенная - это ограничения на хостинге или недостаточная квалификация программиста. Тем не менее, это более предпочтительный способ. Как настроить локаль и вывести дату на руccком можно прочитать тут.

Для решения же нашей задачи мы будем использовать функцию date(). Она может не только вернуть название месяца на английском языке, но и вывести его порядковый номер. Именно он нам и пригодится.

Получение порядкового номера месяца с помощью функции date()

Открываем страницу в документации, где описаны варианты форматирования даты и находим раздел, посвященный месяцам. Вспоминаем, что в григорианском календаре месяцы расположены по порядку, начиная с 1 и заканчивая 12. Значит самый подходящий для нас формат - "n".
Получение порядкового номера месяца с помощью функции date()

Давайте попроубем вывести результат:

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'));

Все статьи

© 2020-2021 Александр Пантелеев