【问题标题】:Change date format for Yii dateField更改 Yii dateField 的日期格式
【发布时间】:2015-11-05 12:07:39
【问题描述】:

我想在 Yii 中显示日期选择器并以“YYYY-MM-DD”格式获取日期,以便我可以保存在我的数据库中。我使用了以下代码,但它以“MM/DD/YYYY”格式给出日期,在保存在数据库中时会引发错误,因为这不是日期。

查看代码:

<div class="row">
    <?php echo $form->labelEx($model,'datecreated'); ?>
    <?php echo $form->dateField($model,'datecreated'); ?>

    <?php echo $form->error($model,'datecreated'); ?>
</div>

模式代码:

<?php

public function tableName()
{
    return 'admin';
}

public function rules()
{

    return array(
        array('datecreated', 'type', 'type' => 'date', 'message' => '{attribute}: is not a date!','dateFormat'=>'YYYY-MM-DD'),
        array('datecreated','safe', 'on'=>'search'),
    );
}

public function attributeLabels()
{
    return array(
        'datecreated' => 'Birthdate',
    );
}

public function search()
{

    $criteria=new CDbCriteria;
    $criteria->compare('datecreated',$this->datecreated,true);

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));
}
?>

【问题讨论】:

    标签: php date yii datepicker


    【解决方案1】:

    您可以在模型中使用beforeSave 函数:

    protected function beforeSave()
    {
        // convert when storing in db
        $this->datecreated = date('Y-m-d', strtotime($this->datecreated));
    
        return parent::beforeSave();
    }
    

    如果您想以 mm/dd/yyyy 格式显示日期,请在模型中使用 afterFind 函数:

    protected function afterFind()
    {
        // convert the date back to mm/dd/yyyy format while viewing
        $this->datecreated = date('m/d/Y', strtotime($this->datecreated));
    
        parent::afterFind();
    }
    

    或者,您可以在 $model-&gt;save(); 之前在控制器中转换日期格式:

    public function actionCreate()
    {
        $model = new Admin();
        if(isset($_POST['Admin']))
        {
            $model->attributes=$_POST['Admin'];
            $model->datecreated = date('Y-m-d', strtotime($model->datecreated));
            ......
            $model->save();
            ......
        }
        ......
    }
    

    【讨论】:

      【解决方案2】:

      您也可以使用 CJuiDatePicker 小部件:

      $this->widget('zii.widgets.jui.CJuiDatePicker', array(
          'model'=>$model,
          'attribute'=>'datecreated',
          // jQuery datepicker plugin options
          'options' => array(
              'showAnim' => 'fold',
              'dateFormat'=>'yyyy-mm-dd',
          ),
          'htmlOptions' => array(
           ),
      ));
      

      您也可以使用 CDateValidator 添加验证规则:

      public function rules()
      {
      
          return array(
              array('datecreated', 'date', 'format' => 'yyyy-MM-dd', 'allowEmpty' => false),
              array('datecreated','safe', 'on'=>'search'),
          );
      }
      

      谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-05
        • 2016-11-22
        相关资源
        最近更新 更多