$model->datetime
为 d-m-Y H:i:s
。
<?php echo $form->textField($model,'datetime'); ?>
我希望输入的值只是 d-m-Y,我该如何格式化它?
最佳答案
一种选择是将日期转换为人类可读的格式以显示它,然后在保存之前恢复为数据库所需的格式。您可以在模型中编辑/创建 afterFind()
方法,将日期转换为人类可读的格式,如下所示:
public function afterFind()
{
$newDate = DateTime::createFromFormat('d-m-Y H:i:s', $this->datetime);
$this->datetime = $newDate->format('d-m-Y');
return parent::afterFind();
}
在保存之前再次编辑/创建模型的 beforeSave()
方法,例如:
public function beforeSave()
{
$newDate = DateTime::createFromFormat('d-m-Y', $this->datetime);
$this->datetime = $newDate->format('d-m-Y H:i:s');
return parent::beforeSave();
}
请注意,保存时,上例中的小时、分钟和秒将始终为 0。您还需要进行一些验证,以确保您的用户输入也采用正确的 d-m-Y 格式,否则日期转换将无法进行。
*修复了拼写错误 newdate->newDate
关于php - Yii 格式文本字段日期时间模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13269342/