2

$model->datetimed-m-Y H:i:s。_

<?php echo $form->textField($model,'datetime'); ?>

我想输入的值只是 dmY,我该如何格式化?

4

1 回答 1

3

一种选择是将日期转换为人类可读的格式以显示它,然后在保存之前恢复为数据库所需的格式。您可以在模型中编辑/创建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。您还需要进行一些验证以确保您的用户输入也是正确的 dmY 格式,否则日期转换将不起作用。

*修正错字newdate->newDate

于 2012-11-07T12:22:34.507 回答