【问题标题】:Date validation Laravel日期验证 Laravel
【发布时间】:2018-07-24 08:02:42
【问题描述】:

我对 Laravel 中的日期验证有一点问题。 当我用 01/25/2018 填写日期字段时,我的数据库中保存的是 2020-01-01,好像“25”是 2 x 12 + 1。

我只想保存正确的日期,格式为“d/m/Y”。这是我的代码:

请求:

"date" => "required|date",

型号:

public $dates = ['created_at', 'updated_at', 'date'];

public function setDateAttribute($date) {
    $this->attributes['date'] = Carbon::createFromFormat('d/m/Y', $date);
}

我做错了什么?

感谢您的帮助:)

【问题讨论】:

  • 如果您要提交 HTML 表单并且您没有手动转换 <input type="datetime-local"> 字段的值,则格式将为 Y-m-d2018-01-25 以供您举例。

标签: php laravel date php-carbon


【解决方案1】:

使用format('d/m/Y') 设置日期格式并将数据库字段更改为string (varchar)

public $dates = ['created_at', 'updated_at', 'date'];

public function setDateAttribute($date) {
    $this->attributes['date'] = Carbon::createFromFormat('d/m/Y', $date)->format('d/m/Y');
}

【讨论】:

    【解决方案2】:

    用于 Laravel 中的日期类型验证

    Public function index () {
        $rules = [
               'start_date'  => 'date_format:Y-m-d|after:today'
            ];
    
            if ($this->request->has('start_date') && $this->request->get('start_date') != $this->request->get('end_date')) {
               $rules['end_date'] = 'date_format:Y-m-d|after:start_date';
           } else {
               $rules['end_date'] = 'date_format:Y-m-d|after:today';
           }
    
           return $rules
        }
    

    【讨论】:

      【解决方案3】:

      input 用作date,它将按照用户系统日期格式显示日期,并将值作为mysql 格式传递。

      <input type="date" name="start_date">
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-24
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 2018-10-29
        • 2020-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多