Laravel中针对特定格式的时间格式验证

3

我是一个助手,可以帮您进行文本翻译。以下为需要翻译的内容:

我正在尝试在我的Laravel应用程序中实现日期格式验证。这是一个API,并以以下格式获取日期时间:

2015-10-09T12:36:576+01:00

这应该是IOS 8601格式,所以我正在使用以下格式检查它:"Y-m-d\TH:i:sO"

'createdAt'  => "required|date_format:Y-m-d\TH:i:sO",

但是验证失败了。我非常确定我在日期格式方面是错误的(我从官方PHP文档中得到了日期格式,意味着该日期格式不是ISO 8601)。请问有人能告诉我这个日期是什么格式吗?

谢谢


可能是正则表达式的问题,当它们变得有点长时,我通常需要在验证数组之外定义它们。 - darryn.ten
1
不好意思,如果这是一个愚蠢的问题,但是为什么你的秒值有3个数字? - Rwd
@RossWilson 是的,看起来提供给我的格式是错误的(即数字值是错误的)。正确的格式应该是2015-10-09T12:36:57+01:00。 - Fahad Sadiq
3个回答

3

我刚才也遇到了同样的问题。使用"Y-m-d\TH:i:sP"进行检查对我有效。

来自PHP文档

P: 格林威治时间(GMT)与小时和分钟之间的冒号的差异(在PHP 5.1.3中添加)


0

你的日期格式以+01:00结尾。你正在尝试与类型O匹配,它是+0100(没有冒号)

在这里查看格式规范。

http://php.net/manual/en/function.date.php

在 Laravel 中有点混乱的是,它创建了一个日期对象,能够准确地读取您的日期,但然后尝试将其呈现回您指定的格式(删除),并将其与原始日期进行比较,这显然是不同的:

https://github.com/laravel/framework/blob/5.4/src/Illuminate/Validation/Concerns/ValidatesAttributes.php#L363

这是一个问题,因为从技术上讲,这两种格式都符合ISO 8601标准。


0

在 Laravel 9 中只需使用

'date' => ['required' , 'date'],

'date' => ['required' , 'date_format:Y/d/m'],

问题是关于将日期验证为特定格式,而不是是否存在。 - ahuemmer
请检查以下代码:'date' => ['required', 'date_format:Y/d/m']。 - majid behzadnasab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接