Yii2 时区:日期列根据格式更改值

Yii2 timezones: date column changes value depending on format

在我的 Yii + MySql 应用程序中,我有一个像这样的 DATE table 列:

start_date DATE

我有一个值:2020-01-01

问题是,当我在 GridView::widget 中显示数据库值“2020-01-01”时,我会根据格式得到不同的值。比如这一栏:

[
    'class'     => 'kartik\grid\DataColumn',
    'attribute' => 'start_date',
    'format'    => ['date', 'php:d/m/Y G:i:s e P'],
],

显示 31/12/2019 23:00:00 UTC +00:00绝对错误,因为它应该是“2020-01-01”(这是 DATE 列,而不是 DATETIME)。

虽然此专栏:

[
    'class'     => 'kartik\grid\DataColumn',
    'attribute' => 'start_date',
],

显示 2020-01-01这是正确的值

我知道 MySql DATE 列假定时间为 00:00:00 我在一些(旧)文档中读到 Yii2 假定数据库中的所有日期都是 UTC,我认为这是错误的。

我在不同级别的时区配置是这样的:

如何告诉 Yii2 数据库值与服务器一样处于 GMT+1,或者数据库值与时区无关?

谢谢

您可能需要将 Formatter::$defaultTimeZone 更改为 Europe/Madrid - 这应该指定传递给格式化程序的日期不是 UTC,而是 Europe/Madrid