Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php GridView yii2中的时区错误_Php_Gridview_Yii2 - Fatal编程技术网

Php GridView yii2中的时区错误

Php GridView yii2中的时区错误,php,gridview,yii2,Php,Gridview,Yii2,你好,我的时区有点问题。我的时区是亚洲/新西伯利亚 在index.php中设置时区和yii格式化程序输出: \Yii::$app->formatter->timeZone // Asia/Novosibirsk 因此,在yii\grid\GridViewwinget中,我有相同日期的下一列(date\u add): 输出不同的值: 只有第三列是正确的,即12月14日(原始日期为2016-12-14 17:00:00) 我假设GridView有自己的时区(或formatter类实例

你好,我的时区有点问题。我的时区是亚洲/新西伯利亚

在index.php中设置时区和yii格式化程序输出:

\Yii::$app->formatter->timeZone // Asia/Novosibirsk
因此,在yii\grid\GridViewwinget中,我有相同日期的下一列(date\u add):

输出不同的值:

只有第三列是正确的,即12月14日(原始日期为2016-12-14 17:00:00)


我假设GridView有自己的时区(或formatter类实例)

GridView正在使用
formatter
组件(您可以在GridView中或在应用程序配置中更改整个应用程序的设置),所以只需修改时区,一切都应该正常工作

仅对于GridView设置:

<?= GridView::widget([
    // ...
    'formatter' => [
        'class' => 'yii\i18n\Formatter',
        'timeZone' => 'Asia/Novosibirsk'
    ],
    // ...
]) ?>
或应用范围:

return [
    // ...
    'timeZone' => 'Asia/Novosibirsk'
    // ...
];

我已经在主配置属性时区,但它没有效果\Yii::$app->formatter返回正确的时区如果我直接在GridView中输入格式化程序配置,它太无效了您是否更改了格式化程序组件中的
defaultTimeZone
?数据库的时区是什么?默认时区是UTC。但我假设MySQL服务器上的时区是GMT+0GMT+0,它给出的结果与UTC相同。我猜你的数据库在不同的时区。请再核对一下。使用
DateTime
时,日期会自动转换为系统的时区。
return [
    // ...
    'components' => [
        // ...
        'formatter' => [
            'class' => 'yii\i18n\Formatter',
            'timeZone' => 'Asia/Novosibirsk'
        ],
    ],
];
return [
    // ...
    'timeZone' => 'Asia/Novosibirsk'
    // ...
];