2015-10-15 31 views
6

. sistem saat dilimi UTC'dir. yii defaultTimeZone, UTC'dir. Ama benim datetime özniteliğimi db'ye kaydetmeden önce "Asia/Kolkata" zaman dilimime dönüştürülüyor.yii2 saat dilimi biçimlendiricisindeki sorun, php.ini zaman dilimi UTC'de

Örn: UTC saat 12: 00hrs benim giriş ben db beklediğiniz 17.30hrs 12'dir: 00hrs ve görünümde 17.30hrs Ama benim db var 17'dir: 00hrs: 30hrs ve görünümde ben 23 aldım .

web.php: Önceden tanımlanmış bir formatı kullanarak belirli bir zaman damgası değeri kaydetmeyi seçebilirsiniz

'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

Aynı anda – Bloodhound

cevap

1

. Bu yüzden, datetime alanınızı arka ucunda bir INTEGER olarak tanımlamanız ve onu bir tamsayı olarak kaydetmek istediğinizi düşünelim. Sen Bulunduğunuz yerin ekran için global tarih biçimlerini kontrol etmek yii\i18n\formatter yapılandırabilirsiniz bu

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 }, 
     ], 
    ]; 
} 

gibi davranış ayarlayabilirsiniz. Sen

'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. 
     ], 

bu Link Oku ve ayrıca Doc başvurmak genelinde erişebileceğiniz config dosyanızda böyle bir şey ayarlayabilirsiniz.

İşlerini umuyoruz.

+0

veritabanında UTC biçiminde zaman kazanmak istiyorum. –