d/m/y 格式的 laravel 中的无效日期格式问题

Invalid date format issue in laravel for d/m/y format

在我的 laravel 应用程序中,我有一个输入字段来插入出生日期,

我的日期格式必须是 d/m/y,我的年龄限制必须是 18-70 岁

在我的控制器的 store 方法中,我有以下 dob 验证规则。

'date_of_birth'=>['required','bail','date','date_format:d/m/y',function ($attribute, $value, $fail) {

                    $age=Carbon::createFromFormat('d/m/y', $value)->diff(Carbon::now())->y;
                    if($age<18||$age>70){
                        $fail('Âge invalide. l\'âge devrait être 18-70');
                    }

                },]

但每次当我尝试提交带有正确日期的表单时,例如 23/12/1995,它总是说日期格式无效

在函数中使用format方法

$age=Carbon::createFromFormat('d/m/y', $value)->diff(Carbon::now())->format('%y');

您的代码有两个问题:

1- 您应该从验证中删除 'date',因为您传递的是字符串而不是日期。

2- 你应该更正格式是正确的:'d/m/Y' Y 是大写字母。

 $rules = ['date_of_birth' => ['required', 'bail', 'date_format:d/m/Y',

            function ($attribute, $value, $fail) {
            $age = Carbon::createFromFormat('d/m/Y', $value)->diff(Carbon::now())->y;
            if ($age < 18 || $age > 70) {
                $fail('Âge invalide. l\'âge devrait être 18-70');
            }

        },
            ]];