Как вывести дату из timestamp на русском?

Добрый вечер.
Есть таблица где хранятся данные об авиаперелётах и связанные таблицы, в которых хранятся данные о странах и городах.
Задача в следующем.
Пользователь вводит поисковый запрос о перелётах в определённый период времени. Получает результат поиска, например перелёты между 2 и 15 февраля в город Бангкок. Под результатами поиска надо вывести ссылки, которые будут выводить информацию о перелётах в этот город в других месяцах(существующие).
Пример:
"Бангкок в феврале", "Бангкок в марте", "Бангкок в апреле" ....... "Бангкок в декабре"
Даты о перелётах хранятся в timestamp. Чтобы вытянуть название месяца из timestamp использовал 'FROM_UNIXTIME(flights.date_end, \'%M\'). Это для того, чтобы получить уникальные названия, без повтора.
Получился вот такой запрос
if(($model = self::find()->select(['FROM_UNIXTIME(flights.date_end, \'%M\') as month', 'flights.city_end_id', 'cities.city', 'cities.description'])
                                 ->distinct()
                                 ->leftJoin('cities', 'cities.id=flights.city_end_id')
                                 ->where(['city_end_id' => $id])
                                 ->andWhere(['>=', 'date_end', mktime(0,0,0,date('m'),date('d'),date('Y'))])
                                 ->asArray()
                                 ->all()) !== null){
            return $model;
        }
        else{
            return false;
        }

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

P.S. Нашёл решение.
Проблема была в том, что неправильно доставал из базы дату. Для FROM_UNIXTIME надо было указать формат %Y-%m а не %M.
Теперь выбираются даты по месяцам без повтора, ну а перевести на русский при помощи Yii::$app->formatter не представляет труда.
if(($model = self::find()->select(['FROM_UNIXTIME(flights.date_end, \'%Y-%m\') as month', 'flights.city_end_id', 'cities.city', 'cities.description'])
                                 ->distinct()
                                 ->leftJoin('cities', 'cities.id=flights.city_end_id')
                                 ->where(['city_end_id' => $id])
                                 ->andWhere(['>=', 'date_end', mktime(0,0,0,date('m'),date('d'),date('Y'))])
                                 ->asArray()
                                 ->all()) !== null){
            return $model;
        }
        else{
            return false;
        }

// И перевод на русский, при условии, что formatter правильно настроен
echo Yii::$app->formatter->format($model->month, ['date', 'MMMM']);
  • Вопрос задан
  • 861 просмотр
Пригласить эксперта
Ответы на вопрос 1
Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...
Не знаю насколько поможет совет (сам я PHP не практикую) но мне кажется оптимальнее использовать формирование дат на клиенте c помощью JS ... momentjs.com/docs Так проще сделать кросс-языковый вывод.
Ответ написан
Ваш ответ на вопрос

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

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