Я использую следующую конфигурацию для часового пояса в 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 будут в установленном часовом поясе для текущего сеанса