2016-12-16 69 views
1

你好我有一些時區的問題。我的時區是亞洲/新西伯利亞。GridView中錯誤的時區yii2

在組的index.php和時區格式化YII輸出:

\Yii::$app->formatter->timeZone // Asia/Novosibirsk 
警予\電網

所以\ GridView的溫格特我有同樣的日期(DATE_ADD)的下一列:

  [ 
       'attribute' => 'date_add', 
       'format' => ['date', 'full'] 
      ], 
      'date_add:datetime', 
      [ 
       'attribute' => 'date_add', 
       'value' => function($row){ 
       return \Yii::$app->formatter->asDatetime(new DateTime($row->date_add), 'full'); 
       } 
      ], 

輸出不同的值: enter image description here

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

我假定,GridView控件有所在時區(或格式化類的實例)

回答

0

GridView控件使用formatter組件(你可以改變它在GridView控件或應用程序配置整個應用程序的設置),所以只需要修改的時間區域和一切應該正常工作。

對於剛剛在GridView設置:

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

對於整個應用程序(formatter在基礎工程模板配置文件中像config/web.php,設置):

return [ 
    // ... 
    'components' => [ 
     // ... 
     'formatter' => [ 
      'class' => 'yii\i18n\Formatter', 
      'timeZone' => 'Asia/Novosibirsk' 
     ], 
    ], 
]; 

或應用廣泛:

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

我已經在主配置屬性timeZone但它沒有效果。 \ Yii :: $ app-> formatter返回正確的時間區域 – Adobe

+0

如果我直接在** GridView **中輸入格式化程序配置**,那麼它不會有效果 – Adobe

+0

您是否更改了格式化程序組件中的'defaultTimeZone'?什麼是數據庫的時區? – Bizley