📜  在 laravel 中验证时间 - PHP (1)

📅  最后修改于: 2023-12-03 15:07:42.720000             🧑  作者: Mango

在 Laravel 中验证时间

在 Laravel 中,我们经常需要对用户输入的时间进行验证,例如验证日期格式是否正确,验证是否在指定的日期范围内等等。在本文中,我们将介绍 Laravel 中如何验证时间。

日期格式验证

验证日期格式是否正确,我们可以使用 Laravel 自带的 date 验证规则。例如,我们要验证输入的日期格式是否为 YYYY-MM-DD,可以使用以下代码:

$validator = Validator::make($request->all(), [
    'date' => 'required|date_format:Y-m-d',
]);

在上面的代码中,date_format 验证规则指定了要验证的日期格式。

日期范围验证

验证日期是否在指定的日期范围内,可以使用 afterbefore 验证规则。例如,我们要验证输入的日期是否在今天之前,可以使用以下代码:

$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 自带的验证规则来验证日期格式和日期范围,也可以使用自定义验证规则来验证时间范围。这些验证规则可以帮助我们确保输入的时间是合法的,提高应用程序的稳定性和可靠性。