Yii更新输入字段错误的日期输出 - 在哪里控制它?

时间:2012-07-04 14:57:25

标签: datetime yii

用户插入日期:06/11/2012。

要插入数据库,我使用:

protected function beforeSave ()
{
  if($this->date <> '')
  { 
    list($d, $m, $y) = explode('/', $this->date);
    $mk=mktime(0, 0, 0, $m, $d, $y);
    $this->date = date ('Y-m-d', $mk);
  }

   return parent::beforeSave ();
} 

问题1)是否有更短的方法?

无论如何,它有效,所以我有一个字符串格式的日期来自数据库日期类型字段:

$date = '2012-11-06'

然后我正确使用日期格式,我得到了日期和月份

yii::app()->dateFormatter->format('dd', $date);

yii::app()->dateFormatter->format('MMMM', $date);

这一切似乎都很好。 但是,在我的更新表单上,我得到了这样的日期:

  

“20/12/1106”

在表单输入字段中,日期应转换为:

dd/mm/yyyy

显示时。

在我的模型规则上,这就是我所拥有的:

array('date', 'type', 'type' => 'date', 'message' => '{attribute}: Invalid Date!', 'dateFormat' => 'dd/mm/yyyy'),

我们可以在Yii上控制这一点,以便日期的输入字段显示为dd / mm / yyyy?

我已经完成了这个,但是如果我们以后有其他控制器然后更新,我们必须改变它。这似乎不是一个好方法。 :(

protected function afterFind ()
{
 if(Yii::app()->controller->action->id == 'update')
 {
  if($this->date <> '')
  {
   Yii::app()->dateFormatter->formatDatetime($this->date,'short');
  }

  return parent::afterFind ();          
 } 
}

1 个答案:

答案 0 :(得分:0)

在渲染更新表单之前,您可以进行一些锻炼。这应该工作,但没有测试 在$this->render(....);

之前的操作更新
$model->date = assign your required format here;

但如果您需要保留此格式,则应避免在每个地方转换日期。只需将数据库中所需格式的日期直接保存即可。