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

他の回答で提案されているものよりも、日付(またはその他のもの)をフォーマットするよりエレガントな方法があると思います。formatterプロパティを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でサポートされていない形式のカスタム フィールドがある場合は、次のように拡張して独自の を簡単に追加できます。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

(少なくとも) 2 つのオプションがあります。

(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))'
),
于 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 に答える