В моем приложении Yii + MySql у меня есть столбец таблицы DATE, например:
start_date DATE
И у меня есть значение: 2020-01-01
.
Проблема в том, когда я показываю значение базы данных '2020-01-01' в GridView::widget
, я получаю разные значения в зависимости от формата. Например, этот столбец:
[
'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 предполагает, что все даты в базе данных являются UT C, что, на мой взгляд, неверно.
Моя конфигурация часового пояса на разных уровнях выглядит следующим образом:
- Unix сервер: GMT + 1 (CET)
- PHP (php .ini): не задано
- Yii2 (main. php): 'timeZone' => 'Europe / Madrid' (протестировано также в Европе / Лондоне)
- MySql: @@ global.time_zone / @@ session.time_zone = SYSTEM
- MySql:
select timediff(now(), utc_timestamp())
: 01: 00: 00
Как я могу сказать Yii2, что значения базы данных указаны в GMT + 1, как сервер, или что значения базы данных являются независимыми от часового пояса c?
Спасибо