2016-05-05 16 views
1

Hallo Ich bin ein Neuling in Yii. Ich speichere Daten in einer Tabelle, die created_at date speichert. Aber ich bekomme ein anderes Datumsformat, das ganzzahlig ist wie "1462422044". Ich möchte es in dd-mm-yyyy h:i:s ändern. Wie ändere ich dieses Datumsformat?So ändern Sie das Datumsformat in Yii

Mein Master.php

public function behaviors() { 
     return [ 
      'timestamp' => [ 
       'class' => TimestampBehavior::className(), 
       'attributes' => [ 
        ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'], 
        ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_at', 
       ], 
       'value' => function() { 
      return time(); 
     }, 
      ], 
      'user' => [ 
       'class' => UserBehavior::className(), 
       'attributes' => [ 
        ActiveRecord::EVENT_BEFORE_INSERT => ['created_by', 'updated_by'], 
        ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_by', 
       ], 
       'value' => function() { 
      return \Yii::$app->user->id == '' ? 0 : \Yii::$app->user->id; 
     }, 
      ], 
     ]; 
    } 

Meine common/models/product.php

public function behaviors() { 
     return [ 
      BlameableBehavior::className(), 
      TimestampBehavior::className(), 
     ]; 
    } 
    /** 
    * @inheritdoc 
    */ 
    public function rules() 
    { 
     return [ 
      [['parent_id', 'created_by', 'updated_by'], 'integer'], 
      [['category_name'], 'required'], 
      [['created_at', 'updated_at'], 'safe'], 
      [['category_name'], 'string', 'max' => 100], 
     ]; 
    } 
+0

Was ist der Datentyp des Feldes created_by in db? – Chinmay

+0

Ich habe datetime in db. –

+0

Ich erhalte einen Fehler: Falscher Datumswert: '1462422994' für die Spalte 'created_at' in Zeile 1, weil ich den Datentyp datetime in db habe und der Wert in der Ganzzahl ist –

Antwort

1

Wenn Ihr Datentyp Datetime in der Datenbank ist, dann müssen Sie Ihre Wertkonvertierung in diesem Format speichern "Y-m-d H: i: s" können Sie dies auf diese Weise tun. und created_at-Feld bedeutet, dass Sie das aktuelle Datum und die Uhrzeit speichern möchten. Versuchen Sie es unter Code-Hoffnung, es funktioniert gut. Hier ist meine Modellvariable $ model, die Sie durch Ihren Variablennamen ersetzen müssen. Unten ist die eine Möglichkeit, wenn Sie aktuelle Datetime speichern möchten.

$model->created_at= date('Y-m-d H:i:s'); 

Hier ist die zweite Möglichkeit, wie Sie Ihre Variable konvertieren können. Angenommen, Sie erhalten Ihren Wert in $currentDate dann können Sie dies wie unten Code tun.

$model->created_at= date('Y-m-d H:i:s',strtotime($currentDate)); 
1

Ändern Sie den Code wie folgt:

public function behaviors() { 
     return [ 
      'timestamp' => [ 
       'class' => TimestampBehavior::className(), 
       'attributes' => [ 
        ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'], 
        ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_at', 
       ], 
       'value' => function() { 
      return date('d-m-Y h:i:s'); 
     }, 
      ], 
      'user' => [ 
       'class' => UserBehavior::className(), 
       'attributes' => [ 
        ActiveRecord::EVENT_BEFORE_INSERT => ['created_by', 'updated_by'], 
        ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_by', 
       ], 
       'value' => function() { 
      return \Yii::$app->user->id == '' ? 0 : \Yii::$app->user->id; 
     }, 
      ], 
     ]; 
    } 

Zeit () ändern Datum ('d-m-Yh: i: s').

+1

Danke, aber bekomme dasselbe Ergebnis Ich bekomme denselben Fehler "Falscher Datumswert: '1462423477' für Spalte 'created_at' in Zeile 1 " –

Verwandte Themen