В базе в таблице в полях date_begin и date_end (тип данных int) хранится timestamp.
Соответственно, в настройках php.ini указана временная зона Europe/Moscow. Во view.php дата отображается как и должна, то есть например 02.05.2017.
На странице update.php (использую здесь для вывода из date_begin и date_end решение от kartik), отображается на день раньше, то есть например 01.05.2017.
Я понимаю, что причина этой проблемы кроется в путанице с временными поясами, ведь UTC и UTC +3 рассматривают один и тот же timestamp как разные даты, но не могу понять, почему виджет DateControl не понимает настройки:
Вот код вызова виджета в _form.php
Код: Выделить всё
<?php
echo $form->field($model, 'date_begin')->widget(DateControl::classname(), [
'displayFormat' => 'php:d.m.Y',
'saveFormat' => 'php:U', // saves as unix timestamp
'displayTimezone'=>'Europe/Moscow',
'saveTimezone'=>'UTC',
'ajaxConversion'=>true,
]);
?>
Код: Выделить всё
'datecontrol' => [
'class' => '\kartik\datecontrol\Module',
// set your display timezone
'displayTimezone' => 'Europe/Moscow',
// set your timezone for date saved to db
'saveTimezone' => 'UTC',
'ajaxConversion'=>true,
],
При этом запись в БД из формы редактирования происходит корректно. То есть выбирая дату, и сохраняя, убеждаюсь, что в заголовке и во view.php дата отображается корректно, только виджет неправильно отображает