【问题标题】:Does Symfony DateTime validator support Y-m-dTH:i:s?Symfony DateTime 验证器是否支持 Y-m-dTH:i:s?
【发布时间】:2019-08-02 20:14:11
【问题描述】:

我需要在 Symfony 中验证日期,预期格式为 Y-m-dTH:i:s,例如 2019-08-02T23:09:01

这就是 DateTime 对象的实例化方式:

//...some code
                    'start_date' => new DateTime([
                        'format' => 'Y-m-dTH:i:s'
                    ]),
//...some code

即使 start_date 是正确的(例如 2019-08-01T20:04:00),验证器仍然会使其无效。如果我尝试使用 2019-08-01 20:04:00 和“Y-m-d H:i:s”格式,那么它可以工作。是否可以在格式中使用该 T ?

【问题讨论】:

  • 您是否尝试过为您的验证器使用格式选项? symfony.com/doc/current/reference/constraints/…
  • T 字面量是指定time 部分或时区指示符的开始吗?因为您可能正在寻找c 格式:implode.io/5m5qPK
  • @Domagoj 是的,当然,我已经尝试过了,正如您在问题中看到的那样。
  • 您是否尝试过将T 转义为\T 或者这只是一个错字?
  • 在 laravel 中也是这样的解决方案:Y-m-d\TH:i:s

标签: symfony datetime symfony-validator


【解决方案1】:

您要验证的日期的来源是什么?它来自表单(用户输入?)?

如果是

那么你应该在连接到表单的实体上使用 DateTime Assert https://symfony.com/doc/current/reference/constraints/DateTime.html

还有

您可以在表单上使用日期时间字段 (https://symfony.com/doc/current/reference/forms/types/datetime.html) 来验证数据输入

如果没有

如果你有来自(例如)数据库的价值,但你不确定它是否有效 您可以使用 Datetime Assert(上面的链接)验证“原始值”,这是示例: https://symfony.com/doc/current/validation/raw_values.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2019-12-10
    • 2017-11-06
    • 2016-05-01
    • 1970-01-01
    相关资源
    最近更新 更多