Установить часовой пояс по умолчанию в Yii

Я использую следующую конфигурацию для часового пояса в config.php

'timeZone' => 'UTC', 

Он работает нормально, и все даты хранятся в базе данных в соответствии с UTC . Теперь каждый пользователь имеет свой часовой пояс в своем профиле, например, UTC + 5 , UTC-5 , UTC + 0 и т. Д.

Теперь, как я могу показать даты в отчетах в соответствии с часовым поясом пользователя. Я использовал активную запись для извлечения записей из базы данных. Есть ли общий способ для всех запросов или мы должны конвертировать дату в пользовательский часовой пояс каждый раз вручную в php?

Благодарю.

Вы можете установить Timezone в Yii, добавив ниже значение в файле main.php config

 return array( 'timeZone' => 'Asia/Kolkata', ) 

Список часовых поясов в PHP: http://php.net/manual/en/timezones.php

Вы можете использовать afterFind для изменения времени соответственно

 public function afterFind() { //apply your logic here $zone = Yii:app()->timeZone; // I don't know code to change time zone, so I assume there is a function named "functionToChangeTimeZone" $this->time = functionToChangeTimeZone($this->time , $zone); return parent::afterFind(); } 

теперь в каждой записи будет изменен часовой пояс в соответствии с их настройками

После загрузки пользовательских данных попробуйте:

 Yii:app()->timeZone = $userTimezone; 

где $ userTimezone – загружается пользовательский часовой пояс из db. Он предназначен для использования в Yii

ИЛИ вы можете установить часовой пояс в mysql:

 Yii::app()->db->createCommand('SET time_zone = <timezonename>')->execute() 

и все поля TIMESTAMP будут в установленном часовом поясе для текущего сеанса