Я использовал cgridview в приложении Yii, я хочу изменить формат даты в значении,
'columns'=>array( array( 'name'=>'Date', 'header'=>'Date', 'value'=>'$data["work_date"]' ),
Я хочу показать дату в формате dd-mm-yyyy, в настоящее время она отображается как yyyy-mm-dd.
Попробуй это,
array( 'name'=>'Date', 'header'=>'Date', //'value'=>'date("d MY",strtotime($data["work_date"]))' 'value'=>'Yii::app()->dateFormatter->format("d MMM y",strtotime($data->date))' ),
Я думаю, что есть более элегантный способ форматировать дату (или что-то еще), чем тот, который предлагается в других ответах. CGridView
использует свойство CGridView
чтобы указать компонент приложения для форматирования значений . format
по умолчанию.
Поэтому необходимо настроить компонент format
в файле конфигурации приложения следующим образом:
'components' => array( ... 'format' => array( 'dateFormat' => 'dmY' ) )
Если work_date
уже является отметкой времени Unix, достаточно описать столбец в CGridView
следующим образом:
array( 'name' => 'work_date', 'type' => 'date' )
Если work_date
похож на вопрос, то массив столбца:
array( 'name' => 'work_date', 'type' => 'date', 'value' => 'strtotime($data->work_date)' )
Если у вас есть настраиваемое поле для форматирования, которое не поддерживается CFormatter, тогда легко добавить свой собственный тип , расширив CFormatter
:
class MyFormatter extends CFormatter { public function formatCustom($value) { // format $value parameter, ie make date conversion like in the question: return date("dmY", strtotime($value)); } }
Тогда конфигурация компонента форматирования:
'components' => array( ... 'format' => array( 'class' => 'MyFormatter' ) )
И колонка описывается следующим образом:
array( 'name' => 'work_date', 'type' => 'custom' )
Таким образом, нет необходимости беспокоиться о значении выражения PHP каждый раз, когда вы хотите форматировать поле того же типа.
Есть (по крайней мере) два варианта:
(При использовании CGridView / CDetailView) вы можете отформатировать строку даты (то есть: поле mysql datetime) вместо метки времени. Вы можете использовать это:
array( 'name' => 'startsOn', 'format' => 'datetime', 'value' => 'strtotime($data->startsOn)' ),
Или используйте это:
array( 'name' => 'startsOn', 'value' => 'Yii::app()->dateFormatter->format("d MMM y", strtotime($data->startsOn))' ),
Для Admin.php
array( 'name'=>'start_date', 'header'=>'Date', 'value'=>'date_format(date_create($data->start_date), "dmY ")', ),
Для View.php
array( 'name'=>'Date', 'value'=>date_format(date_create($model->order_date), "dmY "), ),