我在 Yii 应用程序中有以下 cgridview,我想更改值中的日期格式,
'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 M Y",strtotime($data["work_date"]))'
'value'=>'Yii::app()->dateFormatter->format("d MMM y",strtotime($data->date))'
),
我想有比其他答案中提出的更优雅的方式来格式化日期(或其他任何东西)。 CGridView
使用格式化程序属性指定应用程序的组件以设置值的格式。默认情况下,它是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支持,那么通过扩展CFormatter
很容易添加您自己的类型custom
:
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表达式而烦恼。
(至少)有两个选项:
(使用 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))'
),
对于管理员.php
array(
'name'=>'start_date',
'header'=>'Date',
'value'=>'date_format(date_create($data->start_date), "d-m-Y ")',
),
供查看.php
array(
'name'=>'Date',
'value'=>date_format(date_create($model->order_date), "d-m-Y "),
),
我强烈建议创建或更改目标语言的本地化文件,并在应用程序中引用它,而不是在不集中格式的情况下为其编写自定义函数。请参阅 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