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''], ]) ?>