2016-12-29 123 views
0

我正在尝试在我的laravel应用程序中获取date_format验证。在格式对特定格式的laravel进行TIme格式验证

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

它的API,并获取日期时间它应该是IOS 8601格式,所以我在检查其对格式 "Y-m-d\TH:i:sO"使用

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

但验证失败。我很确定我的日期格式错误(我从官方的php文档得到的意思是数据格式不是ISO 8601)。有人可以告诉我该日期的格式是什么吗?

谢谢

+0

它可能是正则表达式,我通常必须在验证数组之外定义它们,当它们有点长时 –

+1

对不起,如果这是一个愚蠢的问题,但为什么你有3个数字为你的秒值? –

+0

@罗斯威尔逊是啊似乎提供的格式是错误的(因为在数字值是错误的)。正确的格式是2015-10-09T12:36:57 + 01:00 –

回答

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标准。