Yii,在cgridview中显示不同的日期格式

Kir*_*ran 13 php yii

我在Yii应用程序中跟随cgridview,我想更改日期格式的值,

'columns'=>array(
        array(
                'name'=>'Date',
                'header'=>'Date',
                'value'=>'$data["work_date"]'
            ),
Run Code Online (Sandbox Code Playgroud)

我想以格式dd-mm-yyyy显示日期,目前显示为yyyy-mm-dd.

Vib*_*haJ 27

试试这个,

array(
    'name'=>'Date',
    'header'=>'Date',
    //'value'=>'date("d M Y",strtotime($data["work_date"]))'
    'value'=>'Yii::app()->dateFormatter->format("d MMM y",strtotime($data->date))'
),
Run Code Online (Sandbox Code Playgroud)


Ezz*_*zze 5

我想有更优雅的方式来格式化日期(或其他任何东西),而不是其他答案中提出的方式.CGridView使用formatter属性指定应用程序的组件以格式化值.这是format默认情况.

所以应该format在应用程序的配置文件中配置组件,如下所示:

'components' => array(
    ...
    'format' => array(
        'dateFormat' => 'd-m-Y'
    )
)
Run Code Online (Sandbox Code Playgroud)

如果work_date已经是Unix时间戳,则足以CGridView按如下方式描述该列:

array(
    'name' => 'work_date',
    'type' => 'date'
)
Run Code Online (Sandbox Code Playgroud)

如果work_date在问题中那么列的数组:

array(
    'name' => 'work_date',
    'type' => 'date',
    'value' => 'strtotime($data->work_date)'
)
Run Code Online (Sandbox Code Playgroud)

如果一个人有自定义字段的格式不被支持CFormatter则可以很容易地添加自己的类型 custom通过扩展CFormatter:

class MyFormatter extends CFormatter
{
    public function formatCustom($value)
    {
        // format $value parameter, i.e. make date conversion like in the question:
        return date("d-m-Y", strtotime($value));
    }
}
Run Code Online (Sandbox Code Playgroud)

那么格式组件的配置是:

'components' => array(
    ...
    'format' => array(
        'class' => 'MyFormatter'
    )
)
Run Code Online (Sandbox Code Playgroud)

该列描述如下:

array(
    'name' => 'work_date',
    'type' => 'custom'
)
Run Code Online (Sandbox Code Playgroud)

这样,每次要格式化相同类型的字段时,都无需担心 PHP表达式.