laravel 中 d/m/y 格式的日期格式无效问题
Posted
技术标签:
【中文标题】laravel 中 d/m/y 格式的日期格式无效问题【英文标题】:Invalid date format issue in laravel for d/m/y format 【发布时间】:2022-01-03 11:39:40 【问题描述】:在我的 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
)提交表单时,它一直说日期格式无效
【问题讨论】:
Carbon::createFromFormat('d/m/y')
中的年份应为大写 'd/m/Y'
还是不行
'date_format:d/m/y
Y 也应该是大写的。这是因为 php 使用大写的 Y 作为年份
@VolkaDimitrev 尝试 Carbon::createFromFormat('d/m/Y','10/10/1990')->diff(now())->format('%y') 或arbon::createFromFormat('d/m/Y','10/10/1990')->diff(now())->y
@JohnLobo 仍然无效
【参考方案1】:
您的代码有两个问题:
1- 您应该从验证中删除“日期”,因为您传递的是字符串而不是日期。
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');
,
]];
【讨论】:
【参考方案2】:在函数中使用format
方法
$age=Carbon::createFromFormat('d/m/y', $value)->diff(Carbon::now())->format('%y');
【讨论】:
不工作以上是关于laravel 中 d/m/y 格式的日期格式无效问题的主要内容,如果未能解决你的问题,请参考以下文章
MAX日期的Laravel子查询-与父级的子查询链接中的日期时间格式无效