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
Заказать работу
предложить оффер

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

Archive

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