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, можно прочитать в блоге начинающего админа и сеошника. К слову сказать тема раскрыта достаточно полно, благодаря чему данную задачу получится решить с максимальной отдачей.

6 комментариев 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 года

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

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

Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

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