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

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

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

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

阅读 3.5k
评论
    2 个回答
    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);
        }
      • 4
      • 新人请关照

      问题一:
      <?=

      $form->field($model, 'time')->textInput([
          'value' => date("Y-m-d H:i:s", '时间戳')
      ])

      ?>

      问题二:
      <?php

      echo @strtotime('2017-05-13');

      ?>

        撰写回答

        登录后参与交流、获取后续更新提醒