Задать вопрос
Cheizer
@Cheizer

Как на php вставить в date() месяц на русском языке?

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

Вот массив месяцев.
$month = array(
	1  => 'января',
	2  => 'февраля',
	3  => 'марта',
	4  => 'апреля',
	5  => 'мая', 
	6  => 'июня',
	7  => 'июля',
	8  => 'августа',
	9  => 'сентября',
	10 => 'октября',
	11 => 'ноября',
	12 => 'декабря'
);
 echo date('d') . ' ' . $month[date('n')] . ' ' . date('Y');


Вот мой цикл
foreach($array as $key => $val) {
 echo $val['date1'] //2023-01-19 22:55:00
}


Выводит результат 2023-01-19 22:55:00 а мне нужно 2023-янв-19
Как вывести такой результат?
Формат понял как сделать нужный, так:
echo date('Y-M-d', strtotime($val['date1'])) //2023-Jan-19


Но вот месяц не по могу понять как подставить из массива $month. Как это сделать?
  • Вопрос задан
  • 4211 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$dt = new DateTime;
$formatter = new IntlDateFormatter(
    'ru_RU',
    IntlDateFormatter::LONG,
    IntlDateFormatter::LONG
);
$formatter->setPattern('d MMMM yyyy');
echo $formatter->format($dt);
// 18 января 2023
Ответ написан
DanArst
@DanArst
Гриффиндор в моде при любой погоде!
$month = array(
  1  => 'янв',
  2  => 'февр',
  3  => 'март',
  4  => 'апр',
  5  => 'май', 
  6  => 'июнь',
  7  => 'июль',
  8  => 'авг',
  9  => 'сент',
  10 => 'окт',
  11 => 'нояб',
  12 => 'дек'
);

$timestamp = strtotime($val['date1']);
echo date('Y', $timestamp).'-'.$month[date('n', $timestamp)].'-'.date('d', $timestamp);
Ответ написан
@IliaMal
Вариант с массивом месяцев надо чуть-чуть подправить, под ваш запрос так:
$month = [
    '01'  => 'января',
    '02'  => 'февраля',
    '03'  => 'марта',
    '04'  => 'апреля',
    '05'  => 'мая',
    '06'  => 'июня',
    '07'  => 'июля',
    '08'  => 'августа',
    '09'  => 'сентября',
    '10' => 'октября',
    '11' => 'ноября',
    '12' => 'декабря'
];
foreach($array as $key => $val) {
$timestamp = strtotime($val['date1']);
echo date('Y', $timestamp) . '-' . $month[date('m', $timestamp)] . '-' . date('d', $timestamp);
}

Еще надо вам заменить полный месяц на сокращения по 3 буквы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы