Finally, I found the answer using AttributeBehavior .
In my model class, I wrote a behavior code:
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('Ymd H:i:s', strtotime($this->Created)); }, ], ]; }
My model class
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('Ymd 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', ]; } }
If the input format is d / m / Y , you need to replace "/" with "-"
like: input date (created): 09/10/2015
date('Ymd H:i:s', strtotime(str_replace("/","-",$this->created)));