Yii: Отображаем даты по-русски или локализация формата даты в Yii
Переводим даты на русский язык, меняет формат дат на языке, установленном в локализации приложения. В Yii присутствуют файлы локализация на разные языки, всё что нам нужно, это попросить Yii отображать даты по-русски. Вся магия в строке:
<?php echo Yii::app()->dateFormatter->format('d MMMM yyyy', $data->create_time);?>Причём у нас заработало это, если исходная дата в формате Datetime, и timestamp. Почему?
Потому что метод format() форматирует дату согласно первому параметру - 'd MMMM yyyy' (паттерну), а второй параметр может передаваться в обоих форматах (см. http://yiiki.info/class:cdateformatter)
- unix timestamp (например 1288987169)
- Mysql DATETIME
В config/main.php должен быть установлен язык
'sourceLanguage'=>'en_US', 'language'=>'ru', 'charset'=>'utf-8',
Также будет неприятная ошибка, если в конфиге прописана строка:
'dateFormatter'=>array('class'=>'CDateFormatter', 'params'=>array('ru')Ошибка:
Missing argument 1 for CDateFormatter::__construct(), called in /Users/macbook/Sites/YiiRoot/framework/YiiBase.php on line 219 and defined
Так нельзя.
Ответ Qiang'а на офф. форуме:
"CDateFormatter is not an application component. So you can't declare it in 'components' in main.php.
Without declaring it in main.php, you can directly use Yii::app()->dateFormatter because of the existence of CApplication::getDateFormatter().
The date formatter returned uses the locale as specified by Yii::app()->language.
If you want to use the date formatter for a different locale, you can use Yii::app()->getLocale('fr')->dateFormatter"
2 комментариев
можно ещё
//Time Zone
date_default_timezone_set("Europe/Moscow");
в main.php добавить.
Leave a Comment