我在 config.php
中使用以下配置时区'timeZone' => 'UTC',
工作正常,所有日期都根据 UTC 存储在数据库中。现在每个用户在他/她的个人资料中都有自己的时区,如 UTC + 5 , UTC-5 , UTC + 0 等。
现在,如何根据用户时区在报告中显示日期。我使用活动记录从数据库中获取记录。对于所有查询是否有任何通用方法,或者我们必须每次在php?
中手动将日期转换为用户时区感谢。
答案 0 :(得分:5)
您可以通过在config
的main.php文件中添加以下值来在Yii中设置时区return array(
'timeZone' => 'Asia/Kolkata',
)
PHP中的时区列表:http://php.net/manual/en/timezones.php
答案 1 :(得分:2)
加载用户数据后,尝试:
Yii:app()->timeZone = $userTimezone;
其中$ userTimezone - 从db加载用户时区。这是在Yii中使用
或者您可以通过以下方式在mysql中设置时区:
Yii::app()->db->createCommand('SET time_zone = <timezonename>')->execute()
并且所有TIMESTAMP字段都将在当前会话的设置时区
中答案 2 :(得分:2)
您可以使用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();
}
现在每个记录都会根据设置更改时区