用户插入日期: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 ();
}
}
答案 0 :(得分:0)
在渲染更新表单之前,您可以进行一些锻炼。这应该工作,但没有测试
在$this->render(....);
$model->date = assign your required format here;
但如果您需要保留此格式,则应避免在每个地方转换日期。只需将数据库中所需格式的日期直接保存即可。