Php Laravel-日期格式验证未按预期工作

Php Laravel-日期格式验证未按预期工作,php,laravel,datetime,Php,Laravel,Datetime,我的代码: $data['from'] = '2020-03-20 20:30:00'; $data['to'] = '2020-03-21 00:45:00'; $validity = \Validator::make($data, [ 'from' => ['date_format:Y-m-d H:i:s'], 'to' => ['date_format:Y-m-d H:i:s'] ]); // This if gets true, and the error

我的代码:

$data['from'] = '2020-03-20 20:30:00';
$data['to'] = '2020-03-21 00:45:00';
$validity = \Validator::make($data, [
    'from' => ['date_format:Y-m-d H:i:s'],
    'to' => ['date_format:Y-m-d H:i:s']
]);

// This if gets true, and the error message is:
to与格式Y-m-d H:i:s不匹配


令人惊讶的是,当我把
00:45:00
改为
01:45:00
的时候,它却没有进入那里面。我如何解决它?

由于您的区域设置为
亚洲/德黑兰
时间
2020-03-21 00:45:00
实际上无效。根据:

2020年3月21日星期六,00:00:00时钟向前拨1小时 2020年3月21日星期六,当地夏令时01:00:00


这意味着00:00:00和01:00:00之间的时间永远不会发生。由于Laravel日期验证器在内部使用PHP的日期解析,因此解析失败并引发错误。如果只想检查日期是否为给定格式,而忽略任何夏令时怪癖,则可以使用临时设置区域设置为不遵守夏令时。

由于您的区域设置为
Asia/Tehran
,因此时间
2020-03-21 00:45:00
实际上无效。根据:

2020年3月21日星期六,00:00:00时钟向前拨1小时 2020年3月21日星期六,当地夏令时01:00:00

这意味着00:00:00和01:00:00之间的时间永远不会发生。由于Laravel日期验证器在内部使用PHP的日期解析,因此解析失败并引发错误。如果只想检查日期是否为给定格式,而忽略任何夏令时怪癖,则可以使用将区域设置临时设置为不遵守夏令时的区域设置。

尝试

$validity = \Validator::make($data, [
    'from' => 'date_format:Y-m-d H:i:s',
    'to' => 'date_format:Y-m-d H:i:s'
]);
试一试


这是在什么地方?对我来说,这只是一个美好的亚洲/德黑兰….2020-03-21 00:45:00在德黑兰不是一个有效的时间,因为夏令时将时钟从00:00移动到01:00,所以它永远不会发生,所以我要说!!是的,你让我度过了一个夜晚:)为了简单起见,我应该删除这条消息吗?我会说留下问题,让@apokryfos来回答。这是什么语言环境?对我来说,这只是一个美好的亚洲/德黑兰….2020-03-21 00:45:00在德黑兰不是一个有效的时间,因为夏令时将时钟从00:00移动到01:00,所以它永远不会发生,所以我要说!!是的,你让我度过了一个夜晚:)为了简单起见,我应该删除这条消息吗?我会说,留下问题,让@apokryfos来回答。
$validity = \Validator::make($data, [
    'from' => 'date_format:Y-m-d H:i:s',
    'to' => 'date_format:Y-m-d H:i:s'
]);