Yii2 Kartik /日期/日期选择器在更新时显示错误的格式

时间:2018-07-19 18:40:59

标签: date datepicker yii2 active-form

我在活动表单中使用kartik DatePicker。

use kartik\date\DatePicker;

我的activeform字段:

    <?= $form->field($model, 'transferred_date')->widget(DatePicker::className(), [
                        'value' => date('d-M-Y', strtotime('+2 days')),
                        'options' => ['placeholder' => 'Select date ...'],
                        'pluginOptions' => [
                            'format' => 'dd-mm-yyyy',
                            'todayHighlight' => true
                        ]
    ])->label('Transferred Date');
?>

创建时,我将其另存为UTC日期格式:

$model->transferred_date = new \MongoDB\BSON\UTCDateTime(strtotime($postModel['transferred_date'])*1000);

当我更新时,它显示为

enter image description here

我需要

enter image description here

3 个答案:

答案 0 :(得分:2)

您必须向小部件提供格式化日期。

  • 使用ActiveForm时,您可以为特定模型覆盖afterFind()以设置日期格式,并覆盖transferred_date字段的默认时间戳值。
  • 对于格式设置,您可以通过在配置文件common/config/main.php中定义(如果使用advanced-appconfig/web.php(如果使用{{1})来使用yii-i18n-formatter组件}。

    在配置文件中添加以下内容

    basic-app

    在下方添加到您的模型中

    'components'=>[
        'formatter' => [
            'dateFormat'=>'dd-MM-yyyy',
            'datetimeFormat' => 'yyyy-MM-dd HH:mm:ss',
        ],
    ]
    

现在将字段定义更改为下面并刷新页面

public function afterFind() {
    parent::afterFind ();
    $this->transferred_date=Yii::$app->formatter->asDate($this->transferred_date);
}

答案 1 :(得分:1)

您需要这样设置日期格式:

'value' => $model->isNewRecord ? date('d-m-Y', strtotime('+2 days')) : date('d-m-Y', strtotime($model->transferred_date));

答案 2 :(得分:0)

好吧,我的朋友,您所需要的只是将活动表单中日期选择器小部件的格式更改为类似于

 <?= $form->field($model, 'transferred_date')->widget(DatePicker::className(), [
                        'value' => date('d-M-Y', strtotime('+2 days')),
                        'options' => ['placeholder' => 'Select date ...'],
                        'pluginOptions' => [
                            'format' => 'dd-mm-yy',
                            'todayHighlight' => true
                        ]
    ])->label('Transferred Date');
?>