关于Yii2 Datetime Formatter的timezone问题

来源:互联网 发布:apt-get install mysql 编辑:程序博客网 时间:2024/06/05 02:23

问题描述:

当用  Yii::$app->formatter->asDatetime($model->created_at) 显示数据的建立时间时,发生时间偏移,如数据库中的created_at是"2017-06-06 10:10:54",出来的确是”2017年6月6日 下午6:10:54“


问题分析:

Yii把输入时间都当成是UTC时间,但时区设置不是UTC,则输出时自动转换成该时区的时间。


解决方法:

在main.php, 配置以下

'formatter' => [
            'dateFormat' => 'Y-M-d',
            'timeZone' => 'UTC',
        ],

使得该helper不做时区变换,当需要显示当前时区时间时,需使用前定义该时区,如:

Yii::$app->formatter->timeZone = "Asia/Shanghai";

Yii::$app->formatter->asDatetime('now');


要点:

- 当不在main.php指定timeZone的时候,Application将提取php.ini里定义的timezone配置