2015-10-15 7 views
6

php.iniのタイムゾーンはUTCです。システムのタイムゾーンはUTCです。 yii defaultTimeZoneはUTCです。しかし、私のdatetime属性はdbに保存する前に私のタイムゾーン "Asia/Kolkata"に変換されます。yii2タイムゾーンフォーマッタの問題

例:UTC時間12:00hrsと表示17.30hrs にしかし、私は、DBに入ったことは17です::私はデシベルに期待するもの00Hrs 私の入力17.30hrs が12で30hrsとビューで、私は23だ:00hrs 。

web.php:

'formatter' => 
     [ 
      'class' => 'yii\i18n\Formatter', 
      'dateFormat' => 'php:d-m-Y', 
      'datetimeFormat' => 'php:d-m-Y H:i a', 
      'timeFormat' => 'php:H:i A', 
      'timeZone' => 'Asia/Kolkata', 
     ], 
+1

私は同じ問題があります – Bloodhound

答えて

1

あなたが事前に定義されたフォーマットを使用して、特定のタイムスタンプ値を保存するように選択することができます。では、バックエンドのdatetimeフィールドをINTEGERとして定義し、それを整数として保存してみましょう。あなたは、あなたのロケールの表示のためにあなたのグローバル日付形式を制御するためにyii\i18n\formatterを設定することができ、この

public function behaviors() 
{ 
    return [ 
     'timestamp' => [ 
      'class' => TimestampBehavior::className(), 
      'attributes' => [ 
       ActiveRecord::EVENT_BEFORE_INSERT => 'creation_time', 
       ActiveRecord::EVENT_BEFORE_UPDATE => 'update_time', 
      ], 
      'value' => function() { return date('U'); // unix timestamp }, 
     ], 
    ]; 
} 

のような動作を設定することができます。あなたは

'formatter' => 
     [ 
      'class' => 'yii\i18n\Formatter', 
      'dateFormat' => 'php:d-m-Y', 
      'datetimeFormat' => 'php:d-m-Y H:i a', 
      'timeFormat' => 'php:H:i A', 
      'defaultTimeZone' OR 'timeZone' => 'Asia/Calcutta', //global date formats for display for your locale. 
     ], 

このLinkを読み、またDocを参照してください全体にアクセスすることができ、あなたの設定ファイルに次のようなものを設定することができます。

希望の作品です。

+0

私はデータベースにUTC形式で時間を保存したいと思います。 –