2015-10-15 14 views
6

w strefie czasowej php.ini to UTC. Strefa czasowa systemu to UTC. yii defaultTimeZone to UTC. Ale mój atrybut datetime zostanie przekonwertowany na moją strefę czasową "Asia/Kalkuta" przed zapisaniem do bazy danych.Problem z formaterem stref czasowych yii2

Np: UTC czas 12: 00Hrs mój wkład 17.30hrs czego oczekuję w dB wynosi 12: 00hrs i ze względu 17.30hrs Ale co mam w dB jest 17: 30hrs i zdaniem mam 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

Mam ten sam numer – Bloodhound

Odpowiedz

1

Możesz zaoszczędzić konkretną wartość datownika za pomocą predefiniowanego formatu. Załóżmy, że zdefiniowałeś swoje pole datetime w backend jako INTEGER i chcesz zapisać je jako liczbę całkowitą. Można ustawić zachowanie jak ten

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

można skonfigurować yii\i18n\formatter kontrolować swoje światowe formaty dat na wyświetlaczu dla danej lokalizacji. Można ustawić coś takiego w pliku konfiguracyjnym, że można uzyskać dostęp do całej

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

Przeczytaj ten Link a także zapoznać Doc.

Mam nadzieję, że działa.

+0

Chcę zaoszczędzić czas w formacie UTC w bazie danych. –