PHP date() — вывод русского месяца

Author Автор: Роман Чернышов    Опубликовано: 1 марта 2012

Работая над различными веб-проектами (как правило программирование — PHP), практически везде и всегда приходится работать с данными содержащие атрибут — даты. Например дата добавления новости на сайт. И вроде бы все предельно просто и понятно — там где нужно вывести дату, пользуемся командой PHP для вывода даты в любом заданном формате date(). Но она не умеет выводить месяц на русском языке.

В итоге я быстренько накидал функцию, которая заменит мне стандартную функцию для вывода форматированной даты и будет выводить русский месяц.

Привожу код функции:

function rdate($param, $time=0) {
	if(intval($time)==0)$time=time();
	$MonthNames=array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря");
	if(strpos($param,'M')===false) return date($param, $time);
		else return date(str_replace('M',$MonthNames[date('n',$time)-1],$param), $time);
}

Пример работы обычной команды data(«d M Y»);
Выведет результат: 01 Mar 2012

Пример работы новой функции rdate(«d M Y»);
Выведет результат: 01 Марта 2012

string rdate ( string $format [, int $timestamp = time() ] )

Во всем остальном новая функция rdate() работает точно также как и стандартная функция. Для вывода месяца в форматированной дате используется латинский символ «M». Так же возможен второй параметр функции, для указания метки времени — timestamp.

Хороший пост на данную тему, о выводе правильной даты в PHP, можно прочитать в блоге начинающего админа и сеошника. К слову сказать тема раскрыта достаточно полно, благодаря чему данную задачу получится решить с максимальной отдачей.

7 комментариев to “PHP date() — вывод русского месяца”

  • Алексей 20.10.2012 в 6:03 пп

    Спасибо — только начал гуглить как решить вопрос, нашёл какой-то колоссальный класс на php.net, а это — простое и красивое решение — спасибо )

  • Андрей 22.11.2012 в 2:57 пп

    Немного модифицировал функцию и теперь можно выводить день недели на русском языке

    PHP
    function rdate($param, $time=0) {
    if(intval($time)==0)$time=time();
    $MN=array(«Января», «Февраля», «Марта», «Апреля», «Мая», «Июня», «Июля», «Августа», «Сентября», «Октября», «Ноября», «Декабря»);
    $MonthNames[]=$MN[date(‘n’,$time)-1];
    $MN=array(«»,»Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота», «Воскресенье»);
    $MonthNames[]=$MN[date(‘w’,$time)];
    $arr[]=’M’;
    $arr[]=’N’;
    if(strpos($param,’M’)===false) return date($param, $time); else return date(str_replace($arr,$MonthNames,$param), $time);
    }
    //пример
    echo rdate(‘j M Y г. (N) в H:i’);

    • Алексей 06.02.2013 в 10:54 дп

      Внес поправки:
      $MN=array(«Воскресенье»,«Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота»);

      У буржуев воскресенье — начало недели.

  • PHPbot 05.04.2013 в 3:49 дп

    $m_arr = array(1 => ‘Январь’, 2 => ‘Февраль’, 3 => ‘Март’, 4 => ‘Апрель’, 5 => ‘Май’, 6 => ‘Июнь’, 7 => ‘Июль’, 8 => ‘Август’, 9 => ‘Сентябрь’, 10 => ‘Октябрь’, 11 => ‘Ноябрь’, 12 => ‘Декабрь’);
    echo $m_arr[date(‘n’)];

  • Sergey 09.04.2019 в 11:18 дп

    чуть длинновато, но охватывает и другие случаи
    function rdate($param, $time=0) {
    if(intval($time)==0)$time=time();
    $MonthNames=array(«января», «февраля», «марта», «апреля», «мая», «июня», «июля», «августа», «сентября», «октября», «ноября», «декабря»);
    $weekDays=array(«понедельник»,»вторник»,»среда»,»четверг»,»пятница»,»суббота»,»воскресенье»);
    $D = strpos($param,’D’)+1;
    $l = strpos($param,’l’)+1;
    $M = strpos($param,’M’)+1;
    $F = strpos($param,’F’)+1;
    if(!$M&&!$F&&!l&&!D) return date($param, $time);

    return date(str_replace([‘F’,’M’,’l’,’D’],[$MonthNames[date(‘n’,$time)-1],$MonthNames[date(‘n’,$time)-1],$weekDays[date(‘N’,$time)-1],$weekDays[date(‘N’,$time)-1]],$param), $time);

    }
    но технически может работать и без проверки условия, если символов не будет, замены не произойдет

  • Sergey 09.04.2019 в 11:34 дп

    И строго говоря $time нельзя установить в 0, лучше в пустую строку, т.к. 0 — валидное значение 1 января 1970 года

  • Полупрограммист 22.11.2022 в 8:04 дп

    Очень понравилось, хорошо работает с датой из базы данных

Оставить комментарий на Sergey

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 159₽
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка