📅  最后修改于: 2023-12-03 15:07:42.720000             🧑  作者: Mango
在 Laravel 中,我们经常需要对用户输入的时间进行验证,例如验证日期格式是否正确,验证是否在指定的日期范围内等等。在本文中,我们将介绍 Laravel 中如何验证时间。
验证日期格式是否正确,我们可以使用 Laravel 自带的 date
验证规则。例如,我们要验证输入的日期格式是否为 YYYY-MM-DD
,可以使用以下代码:
$validator = Validator::make($request->all(), [
'date' => 'required|date_format:Y-m-d',
]);
在上面的代码中,date_format
验证规则指定了要验证的日期格式。
验证日期是否在指定的日期范围内,可以使用 after
和 before
验证规则。例如,我们要验证输入的日期是否在今天之前,可以使用以下代码:
$validator = Validator::make($request->all(), [
'date' => 'required|date|before:today',
]);
在上面的代码中,before
验证规则指定了要验证的日期不能在今天之后。
同时,我们也可以使用 after
验证规则来验证日期是否在指定的日期之后。例如,我们要验证输入的日期是否在 10 天后之后,可以使用以下代码:
$validator = Validator::make($request->all(), [
'date' => 'required|date|after:+10 days',
]);
在上面的代码中,after
验证规则指定了要验证的日期必须在当前时间之后 10 天之后。
除了验证日期之外,我们还可以在 Laravel 中验证时间。例如,我们要验证输入的时间是否在指定的时间范围内,可以使用自定义验证规则。以下是一个示例自定义验证规则的代码:
Validator::extend('time_range', function ($attribute, $value, $parameters, $validator) {
$startTime = $parameters[0];
$endTime = $parameters[1];
$time = DateTime::createFromFormat('H:i', $value);
$startTime = DateTime::createFromFormat('H:i', $startTime);
$endTime = DateTime::createFromFormat('H:i', $endTime);
return $time >= $startTime && $time <= $endTime;
});
在上面的代码中,我们定义了一个名为 time_range
的自定义验证规则,它需要传入两个参数:起始时间和结束时间。在验证时,我们先将输入的时间以及起始时间和结束时间都转换成 DateTime
对象,然后比较它们的大小关系,最后返回验证结果。
使用这个自定义验证规则时,我们只需要在验证规则中使用 time_range
即可。例如,我们要验证输入的时间是否在上午 9 点到下午 5 点之间,可以使用以下代码:
$validator = Validator::make($request->all(), [
'time' => 'required|time_range:09:00,17:00',
]);
以上就是在 Laravel 中验证时间的方法。我们可以使用 Laravel 自带的验证规则来验证日期格式和日期范围,也可以使用自定义验证规则来验证时间范围。这些验证规则可以帮助我们确保输入的时间是合法的,提高应用程序的稳定性和可靠性。