2015-01-20 19 views
5

Ho configurato un campo data appuntamento_data come datetime campo in mysql db.yii2: formattazione della data per la visualizzazione

nel mio modello regole Appointment.php sono impostati in questo modo:

public function rules() 
    { 
     return [ 
      [['appointment_date','weekdays'], 'safe'], 
      [['appointment_date'], 'date','format' => 'd-M-yyyy H:m'], 

e in web.php nell'ambito della componente Ho impostato

'formatter' => [ 
     'defaultTimeZone' => 'UTC', 
     'timeZone' => 'Asia/Kolkata', 

e, a mio avviso Sto cercando di formattare il data per la visualizzazione in questo modo:

[ 
    Yii::$app->formatter->asDatetime('appointment_date') 
], 

Ora sto ottenendo l'errore -

appointment_date' is not a valid date time value: DateTime::__construct(): Failed to parse time string (appointment_date) at position 0 (a): The timezone could not be found in the database 
Array 
(
[warning_count] => 1 
[warnings] => Array 
(
[6] => Double timezone specification 
) 

[error_count] => 3 
[errors] => Array 
(
[0] => The timezone could not be found in the database 
[11] => Unexpected character 
[12] => Double timezone specification 
) 

considerando che la data memorizzata nel database è come: 2015-01-20 11:50:00

Se non mi formattazione della data e semplicemente mantenendo l'attributo in vista, come appointment_date quindi la data è indicato come 2015-01-20 11:50:00

voglio mostrare la data come 20-01-2015 11:50:00

Se sto usando il codice come questo:

[ 
    'attribute'=>'appointment_date', 
    'format'=>['DateTime','php:d-m-Y H:i:s'] 
      ], 

Sto ottenendo la data formattata correttamente.

io voglio sapere cosa sto facendo male qui nel usando

Yii::$app->formatter->asDatetime('appointment_date') 

Grazie

risposta

6

Penso che sia solo un piccolo errore di battitura. Si passa in una stringa nel metodo asDateTime dove deve il valore

Yii::$app->formatter->asDatetime('appointment_date') 

dovrebbe essere

Yii::$app->formatter->asDatetime($model->appointment_date) 

Documenti: http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asDatetime()-detail

+0

@ fl0r- anche il tuo suggerimento è corretto, ma ho bisogno di usare un codice lungo come 'attributo =>' appuntamento_data', 'valore' => Yii :: $ app-> formattatore-> asDatetime ($ modello-> appuntamento_data) – Pawan

6

OK E 'così semplice, ho bisogno di usare

'appoinment_date:date' 

o

'appointment_date:datetime' 

e aggiungere il formato nel formattatore componente

'formatter' => [ 
     'defaultTimeZone' => 'UTC', 
     'timeZone' => 'Asia/Kolkata', 
     'dateFormat' => 'php:d-m-Y', 
     'datetimeFormat'=>'php:d-M-Y H:i:s' 

e ora si sta lavorando bene.

0

Il mio tipo di data di DB è date quindi memorizza e dà risposta nel formato "AAAA-GG-MM".
Ho eseguito questa operazione (index.php) senza modificare la logica oi dati DB.

inizialmente era

'date' 

che ho cambiato con questo-

  [ 
       'attribute' => 'date', 
       'value' => function ($model, $key, $index, $widget) { 
        return date("d-m-Y", strtotime($model->date)); 
       }, 
      ], 

si sta lavorando bene per me,
spero che funzionerà per qualcuno in più bisognosi.

0

mettere il codice in basso nella sezione componente nel progetto/config/web.php

'formatter' => [ 
    'defaultTimeZone' => 'UTC', 
    'timeZone' => 'Asia/Kolkata', 
    'dateFormat' => 'php:d-m-Y', 
    'datetimeFormat'=>'php:d-M-Y H:i:s' 
    ] 

Dove si mostra la data ot datetimein griglia basta aggiungere questa Per Data

'date_column_name:date' 

Per Datetime

'datetime_column_name:datetime' 

Questo è tutto. Funzionerà per l'intero progetto dove vuoi cambiare la data o il formato datetime.

Problemi correlati