Название месяца / дата на русском языке с помощью PHP

Иногда на страницах сайта появляется необходимость вывести не просто цифровую дату типа 23.07.2020, а сразу русскую дату, в которой месяц будет написан русским названием. И будет она выглядеть уже вот так 23 июля 2020.

Вы спросите: «Зачем это нужно?». А нужно это в первую очередь для лучшего визуального восприятия даты, так как первый уже стандартный для многих сайтов формат даты из одних только цифр с точками воспринимается намного хуже, чем когда день и год разделены словом-названием месяца. В этом случае можно намного быстрее понять, от какого эта дата месяца и года.

Но, что самое интересное, стандартная и довольно полезная дата-временная функция date() может выводить название месяца только на английском языке (от January до December), то есть воспользоваться параметром F данной функции нам не подойдет.

Тут нужен другой подход, заключающийся в подстановке заместо численного значения месяца (от 1 до 12) русского слова-обозначения этого месяца. На словах звучит сложновато, поэтому предлагаю в качестве примера вывести таким способом текущую дату:

//список месяцев с названиями для замены
$_monthsList = array(«.01.» => «января», «.02.» => «февраля»,
«.03.» => «марта», «.04.» => «апреля», «.05.» => «мая», «.06.» => «июня»,
«.07.» => «июля», «.08.» => «августа», «.09.» => «сентября»,
«.10.» => «октября», «.11.» => «ноября», «.12.» => «декабря»);
//текущая дата
$currentDate = date(«d.m.Y»);
//переменная $currentDate теперь хранит текущую дату в формате 22.07.2015
//но так как наша задача — вывод русской даты,
//заменяем число месяца на название:
$_mD = date(«.m.»); //для замены
$currentDate = str_replace($_mD, » «.$_monthsList[$_mD].» «, $currentDate);
//теперь в переменной $currentDate хранится дата в формате 22 июня 2015

Вывести один лишь только текущий месяц на русском языке еще проще:

$_monthsList = array(
«1»=>»Январь»,»2″=>»Февраль»,»3″=>»Март»,
«4»=>»Апрель»,»5″=>»Май», «6»=>»Июнь»,
«7»=>»Июль»,»8″=>»Август»,»9″=>»Сентябрь»,
«10»=>»Октябрь»,»11″=>»Ноябрь»,»12″=>»Декабрь»);
$month = $_monthsList[date(«n»)];
echo $month;
//выведет, например, для 7 месяца «Июль»

Ну и для того, что бы было под рукой (это же все-таки заметка), рассмотрим еще несколько реальных примеров, с которыми, обычно, и приходится сталкиваться на практике. Для удобства сделаем их подзаголовками.

Вывод русского названия месяца в дате обычного формата, например 12.03.2015

Данный случай в принципе почти одинаков с описанным чуть выше, разница только в том, что $currentDate будет изначально задано по коду ранее. А выглядеть это будет так:

//текущая дата
$currentDate = ‘12.03.2015’; //может быть присвоена из другой переменной
//список месяцев с названиями для замены
$_monthsList = array(
«.01.» => «января»,
«.02.» => «февраля»,
«.03.» => «марта»,
«.04.» => «апреля»,
«.05.» => «мая»,
«.06.» => «июня»,
«.07.» => «июля»,
«.08.» => «августа»,
«.09.» => «сентября»,
«.10.» => «октября»,
«.11.» => «ноября»,
«.12.» => «декабря»
);
//Наша задача — вывод русской даты,
//поэтому заменяем число месяца на название:
$_mD = date(«.m.», strtotime($currentDate)); //для замены
$currentDate = str_replace($_mD, » «.$_monthsList[$_mD].» «, $currentDate);
//теперь в переменной $currentDate хранится дата в формате 12 марта 2015

В итоге, после небольших манипуляций, мы получаем правильную дату на выходе.

Вывод даты на русском языке из unix timestamp формата, например 1437556706

Обработка такой даты является самой интересной, так как тут придется скомбинировать приемы изменения текущей даты и какой-то определенной даты в цифровом формате. А именно: нам нужно вначале получить дату из метки времени (unix timestamp), а потом в этой дате заменить число месяца на русское название месяца. Сделать это можно вот так:

//текущая дата в формате Unix TimeStamp
$_timestampDate = ‘1437556706’; //может быть присвоена из другой переменной
//переводим в нормальную дату
$currentDate = date(«d.m.Y», $_timestampDate); //из 1437556706 в 22.07.2015
//список месяцев с названиями для замены
$_monthsList = array(
«.01.» => «января»,
«.02.» => «февраля»,
«.03.» => «марта»,
«.04.» => «апреля»,
«.05.» => «мая»,
«.06.» => «июня»,
«.07.» => «июля»,
«.08.» => «августа»,
«.09.» => «сентября»,
«.10.» => «октября»,
«.11.» => «ноября»,
«.12.» => «декабря»
);
//Наша задача — вывод русской даты,
//поэтому заменяем число месяца на название:
$_mD = date(«.m.», $_timestampDate); //для замены
$currentDate = str_replace($_mD, » «.$_monthsList[$_mD].» «, $currentDate);
//теперь в переменной $currentDate хранится дата в формате 22 июня 2015

В итоге мы получили нужный нам формат даты из метки времени. Все как и хотели.

Share this post:

Recent Posts