ymd type hora guardar formatos formato fecha dmy cambiar yii2 yii2-advanced-app

yii2 - type - guardar fecha y hora en mysql



Yii2 Ver formato de fecha y hora(dmY H: i: s) Pero cuando se guarda/actualiza en formato de cambio de DB a Ymd H: i: s (3)

Estoy usando Kartik DateTimePicker Extension

<?= $form->field($model, ''Created'')->widget(DateTimePicker::classname(),[ ''model'' => $model, ''attribute'' => ''Created'', ''name'' => ''Created'', ''options'' => [''placeholder'' => ''Select Created''], ''pluginOptions'' => [ ''format'' => ''dd-mm-yyyy hh:ii:ss'', ''todayHighlight'' => true ] ]) ?>

El usuario completa la fecha de creación, el formato es

dmY H: i: s (como 24-09-2015 11:21:10)

Pero cuando guarde el registro en la base de datos, entonces Crear formato de fecha cambie a

Ymd H: i: s (como 2015-09-24 11:21:10)

¿Cómo puedo cambiar el formato de fecha en guardar / actualizar registro?


Necesita simplemente agregar este código antes de guardar / actualizar el modelo en el controlador.

me gusta,

// ICU format $model->Created = Yii::$app->formatter->asDate($_POST[''modelName''][''Created''], ''yyyy-MM-dd HH:mm:ss''); // 2014-10-06 15:22:34

O

// PHP date()-format $model->Created = Yii::$app->formatter->asDate($_POST[''modelName''][''Created''], ''php:Y-m-d H:i:s''); // 2014-10-06 15:22:34

Para obtener más información, consulte este enlace


Finalmente encontré la respuesta usando AttributeBehavior .

En mi clase modelo, escribí el código de comportamientos :

public function behaviors() { return [ [ ''class'' => AttributeBehavior::className(), ''attributes'' => [ // update 1 attribute ''created'' OR multiple attribute [''created'',''updated''] ActiveRecord::EVENT_BEFORE_INSERT => [''created'',''updated''], ActiveRecord::EVENT_BEFORE_UPDATE => ''updated'', ], ''value'' => function ($event) { return date(''Y-m-d H:i:s'', strtotime($this->Created)); }, ], ]; }

Mi clase de modelo

namespace frontend/models; use Yii; use yii/db/ActiveRecord; use yii/behaviors/AttributeBehavior; /** * This is the model class for table "product". * * @property integer $id * @property integer $product_id * @property string $product_name * @property string $created * @property string $updated */ class Product extends ActiveRecord { public $csv_file; /** * @inheritdoc */ public static function tableName() { return ''product''; } public function behaviors() { return [ [ ''class'' => AttributeBehavior::className(), ''attributes'' => [ ActiveRecord::EVENT_BEFORE_INSERT => [''created'',''updated''], // update 1 attribute ''created'' OR multiple attribute [''created'',''updated''] ActiveRecord::EVENT_BEFORE_UPDATE => ''updated'', // update 1 attribute ''created'' OR multiple attribute [''created'',''updated''] ], ''value'' => function ($event) { return date(''Y-m-d H:i:s'', strtotime($this->LastUpdated)); }, ], ]; } /** * @inheritdoc */ public function rules() { return [ [[''id'', ''product_id'', ''product_name'', created, updated], ''required''], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ ''id'' => ''ID'', ''product_id'' => ''Product ID'', ''product_name'' => ''Product Name'', ''created'' => ''Created'', ''updated'' => ''Updated'', ]; } }

Si el formato de entrada es d / m / Y, entonces necesita reemplazar el "/" por "-"

como: fecha de entrada (creada): 10/09/2015

date(''Y-m-d H:i:s'', strtotime(str_replace("/","-",$this->created)));


usar en forma activa

''clientOptions'' => [''alias'' => ''dd-mm-yyyy''],

usar en forma activa

echo MaskedInput::widget([ ''name'' => ''input-31'', ''clientOptions'' => [''alias'' => ''date'']]);

usar clase

Clase yii / widgets / MaskedInput

Ejemplo

<?= $form->field($model, ''date_of_birth'')->widget(/yii/widgets/MaskedInput::className(), [ ''name'' => ''input-31'', ''clientOptions'' => [''alias'' => ''dd-mm-yyyy''], ]) ?>