Rumah  >  Soal Jawab  >  teks badan

php - YII2中 ActiveForm里的field怎么可以输出时间而不是时间戳?

<?= $form->field($model, 'time')->textInput() ?>

问题一:
我的time在数据库里是一个时间戳,我现在想显示的是时间,怎么处理一下?

问题二:
我在此日期表单中填入 如 2017-05-13 的字符串,在模型中可以写什么方法将它自动转为时间戳?

漂亮男人漂亮男人2734 hari yang lalu517

membalas semua(1)saya akan balas

  • 怪我咯

    怪我咯2017-05-16 12:59:56

    class XXX extends \yii\db\ActiveRecord
    {
        public function rules()
        {
            return [
            
                ...other rules...
                
                ['time', function($attr, $params) {
                    if ($this->hasErrors()) return false;
    
                    $datetime = $this->{$attr};
                    
                    $time = strtotime($datetime);
                    // 验证时间格式是否正确
                    if ($time === false) {
                        $this->addError($attr, '时间格式错误.');
                        return false;
                    }
                    // 将转换为时间戳后的时间赋值给time属性
                    $this->{$attr} = $time;
                    return true;
                }],
            ];
        }
    
        ...others...
        
        /**
         * 从数据库中 find() 数据后将 time 格式化。
         */
        public function afterFind()
        {
            parent::afterFind();
            $this->time = date('Y-m-d', $this->time);
        }

    balas
    0
  • Batalbalas