13

我在 Yii 应用程序中关注了 cgridview,我想更改值的日期格式,

'columns'=>array(
        array(
                'name'=>'Date',
                'header'=>'Date',
                'value'=>'$data["work_date"]'
            ),

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

4

5 回答 5

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))'
),
于 2012-06-15T14:13:29.583 回答
5

我想有比其他答案中提出的更优雅的方式来格式化日期(或其他任何内容)。CGridView使用formatter属性来指定应用程序的组件来格式化值format默认情况下。

所以应该format像这样在应用程序的配置文件中配置组件:

'components' => array(
    ...
    'format' => array(
        'dateFormat' => 'd-m-Y'
    )
)

如果work_date已经是 Unix 时间戳,那么将列描述CGridView如下就足够了:

array(
    'name' => 'work_date',
    'type' => 'date'
)

如果work_date就像问题中那样,那么列的数组:

array(
    'name' => 'work_date',
    'type' => 'date',
    'value' => 'strtotime($data->work_date)'
)

如果一个自定义字段格式不受CFormatter支持,那么很容易通过扩展添加您自己的类型customCFormatter

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));
    }
}

那么格式组件的配置是:

'components' => array(
    ...
    'format' => array(
        'class' => 'MyFormatter'
    )
)

该列是这样描述的:

array(
    'name' => 'work_date',
    'type' => 'custom'
)

这样,每次您想要格式化相同类型的字段时,就无需担心值PHP 表达式。

于 2013-10-15T11:12:23.783 回答
2

有(至少)两种选择:

(使用 CGridView/CDetailView 时)您可能希望格式化日期字符串(即:mysql 日期时间字段)而不是时间戳。你可以使用这个:

array(
    'name' => 'startsOn',
    'format' => 'datetime',
    'value' => 'strtotime($data->startsOn)'
),

或者使用这个:

array(
    'name' => 'startsOn',
    'value' => 'Yii::app()->dateFormatter->format("d MMM y", strtotime($data->startsOn))'
),
于 2012-06-22T15:36:36.927 回答
0

对于 Admin.php

array(
        'name'=>'start_date',
        'header'=>'Date',
        'value'=>'date_format(date_create($data->start_date), "d-m-Y ")',
    ),

对于 View.php

array(
    'name'=>'Date',
    'value'=>date_format(date_create($model->order_date), "d-m-Y "),
    ),
于 2015-09-14T07:33:50.213 回答
0

我强烈建议创建或更改目标语言的本地化文件,并在您的应用程序中引用它,而不是在不集中格式的情况下为其编写自定义函数。请参阅https://www.yiiframework.com/doc/guide/1.1/en/topics.i18n

// Refer our own locale file(s)
Yii::app()->setLocaleDataPath(Yii::getPathOfAlias('application.shared').'/i18n/data/');

要过滤网格视图中的本地化日期/日期时间列,请参阅我在“重复”问题中的回答:https ://stackoverflow.com/a/53759001/3090890

于 2018-12-13T10:07:28.490 回答