问题描述:
当用 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配置