yii datetimepicker показывает неправильное время

#php #yii2

#php #yii2

Вопрос:

У меня есть приложение Yii с представлением, в котором отображаются сведения из базы данных, когда пользователь нажимает кнопку Обновления, открывается форма с теми же данными для редактирования. Однако поле даты и времени в представлении отличается, время указано правильно, в форме время отстает на час. Код в представлении:

 [
    'attribute' => 'date_time',
    'format' => ['date', 'php:d-M-Y H:i']
],
 

это показывает правильную дату и время

в форме код

 echo $form->field($model, 'date_time')->widget(kartikwidgetsDateTimePicker::className(), [
    'convertFormat' => true,
    'pluginOptions' => [
        'autoclose' => true,
        'format' => 'php:d-M-Y H:i'
    ],
]);
 

это показывает время с опозданием на 1 час

в config/main.php файл, для которого установлен часовой пояс

 'timeZone' => 'Europe/London'
 

Я возился с этим весь день, и я просто не могу с этим разобраться, был бы признателен за некоторые указания

Я только что попытался добавить эти строки:

 $this_date = $formatter->astime($model->date_time);
echo $this_date
 

и это дает правильную дату и время, но если я затем изменю поле на

 echo $form->field($model, $this_date)->widget(kartikwidgetsDateTimePicker::className(), [
    'convertFormat' => true,
    'pluginOptions' => [
        'autoclose' => true,
        'format' => 'php:d-M-Y H:i'
    ],
]);
 

Я получаю сообщение об ошибке «Имя атрибута должно содержать только символы word».

Ответ №1:

Ошибка, которую вы получаете, заключается в том, что вы пытаетесь получить доступ к атрибуту модели с датой, которую вы отформатировали. Вместо этого используйте атрибут value

     echo $form->field($model, 'date_time') >widget(kartikwidgetsDateTimePicker::className(), [
    'convertFormat' => true,
    'value'=> $this_date,
    'pluginOptions' => [
        'autoclose' => true,
        'format' => 'php:d-M-Y H:i'
    ],
]);
 

Ответ №2:

отсортировал его, изменил поле на

 echo 'Incident Date/Time'; 
echo DatePicker::widget([
       'name' => 'date_time',
       'type' => DatePicker::TYPE_COMPONENT_PREPEND,
       'value' => $this_date,
       'pluginOptions' => [
         'autoclose'=>true
       ] 
     ]);
 

и теперь он показывает правильную дату и время