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