Mysql поле timestamp_start тип TIMESTAMP по умолчанию CURRENT_TIMESTAMP
Yii2 конфигурация formatter
'formatter' => [
'locale' => 'ru-RU',
'defaultTimeZone' => 'Europe/Moscow',
'timeZone' => 'Asia/Yekaterinburg',
'dateFormat' => 'dd.MM.yyyy',
'timeFormat' => 'HH:mm:ss',
'datetimeFormat' => 'dd.MM.yyyy HH:mm:ss',
]
Валидация в модели по формату хранения
public function rules()
{
return [
[['timestamp_start'], 'date', 'format' => 'php:Y-m-d H:i:s'],
];
}
форма
<?=
$form->field($model, 'timestamp_start')->widget(kartik\datetime\DateTimePicker::classname(), [
'options' => [
'value' => (!$model->timestamp_start) ? Yii::$app->formatter->asDatetime(date('Y-m-d H:i:s')) : Yii::$app->formatter->asDatetime($model->timestamp_start),
],
'pluginOptions' => [
'startDate' => Yii::$app->formatter->asDatetime(date('Y-m-d H:i:s')),
'format' => Yii::$app->params['jsFormatter']['datetimeFormat'],
'autoclose' => true,
]
]);
?>
Как правильно сохранить отформатированную дату из формы в родной временной зоне ('Europe/Moscow').
Копал в сторону behaviours есть события:
ActiveRecord::EVENT_BEFORE_INSERT
ActiveRecord::EVENT_BEFORE_UPDATE
ActiveRecord::EVENT_BEFORE_VALIDATE
Писал обработчик переформатирования и смены временной зоны через DateTime
Форматирование успешно а вот временная зона обратно не меняется.
Пробовал через beforeValidate() - результат тот же
В итоге каждое сохранение + 2 часа.
MYSQL 5.7
PHP 7.1