【问题标题】:TIme format validation in laravel against a particular formatlaravel 中针对特定格式的时间格式验证
【发布时间】:2017-05-13 20:00:06
【问题描述】:

我正在尝试在我的 laravel 应用程序中进行 date_format 验证。它是一个 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)。谁能告诉我那个日期是什么格式的?

谢谢

【问题讨论】:

  • 可能是正则表达式,当它们有点长时,我通常必须在验证数组之外定义它们
  • 对不起,如果这是一个愚蠢的问题,但为什么你的秒值有 3 个数字?
  • @RossWilson 是的,似乎提供的格式是错误的(因为数值错误)。正确的格式是 2015-10-09T12:36:57+01:00

标签: php datetime laravel-5.3 datetime-format


【解决方案1】:

您的日期格式以 +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。

【讨论】:

    【解决方案2】:

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

    来自PHP Docs

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      • 2021-09-25
      • 1970-01-01
      • 2014-12-15
      • 2021-05-03
      • 2019-06-25
      • 1970-01-01
      相关资源
      最近更新 更多