编程

Laravel 中验证特定时区

507 2024-03-22 16:50:00

Laravel 提供了一个开箱即用的时区(timezone)验证规则,你用以用来验证给定的值是不是一个有效的时区。

$request->validate([
    'timezone' => 'timezone',
]);

不过,如果你想验证的是,给定的值是特定时区集合中的一个有效时区呢?比如,你想验证给定的值是美国可用的时区集合中的一个有效时区。

Laravel 10.x 中的这个 PR 刚刚正是用来解决这一问题。现在,你可用传递 region 参数到 timezone 验证规则,用以验证给定值是不是指定区域内的一个有效时区。

比如,你想验证给定值是不是美国可用的有效时区,可以这样:

$request->validate([
    'timezone' => 'timezone:Per_country,US',
]);

或者,如果你需要的是非洲区域的时区,可以这样:

$request->validate([
    'timezone' => 'timezone:Africa',
]);

该功能利用 PHP 的 DateTimeZone::listIdentifiers() 方法从给定区域获取时区列表。

你可以阅读它来了解哪些时区区域可用于验证。