4

我在config.php中使用以下时区配置

'timeZone' => 'UTC',

它工作正常,所有日期都根据UTC存储在数据库中。现在每个用户在他/她的个人资料中都有自己的时区,例如UTC+5UTC-5UTC+0等。

现在如何根据用户时区在报告中显示日期。我使用活动记录从数据库中获取记录。是否有所有查询的通用方法,或者我们必须每次在 php 中手动将日期转换为用户时区?

谢谢。

4

3 回答 3

5

您可以通过在配置的 main.php 文件中添加以下值来设置 Yii 中的时区

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

对于 PHP 中的时区列表:http: //php.net/manual/en/timezones.php

于 2014-01-03T13:57:20.740 回答
2

加载用户数据后尝试:

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

其中 $userTimezone - 从 db 加载用户时区。在 Yii 中使用

或者您可以通过以下方式在 mysql 中设置时区:

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

并且所有 TIMESTAMP 字段都将在当前会话的设置时区中

于 2013-11-04T08:28:46.100 回答
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();
}

现在每条记录都会根据他们的设置改变时区

于 2013-11-04T08:35:26.290 回答