LessThanOrEqual没有时间的日期

时间:2017-06-09 14:56:58

标签: symfony validation

我尝试验证日期(不是日期时间)

在我的验证器中,我有:

myDate:
    - Date: ~
    - LessThanOrEqual:
        value: today
        message: "myDate must be less or equal than today."

在提交表单之前,我将此日期发送到我的API(我使用symfony作为FOSRestBundle的API):

myDate:"2017-06-09T00:00:00.000Z"

但是当我在这个方法中看Symfony \ Component \ Validator \ Constraints \ LessThanOrEqualValidator时:

protected function compareValues($value1, $value2)
{
    return $value1 <= $value2;
}

我有这些价值观:

$ VALUE1

DateTime::__set_state(array(
   'date' => '2017-06-09 02:00:00.000000',
   'timezone_type' => 3,
   'timezone' => 'Europe/Paris',
))

$值2

DateTime::__set_state(array(
   'date' => '2017-06-09 00:00:00.000000',
   'timezone_type' => 3,
   'timezone' => 'Europe/Paris',
))

我的验证失败了。

你能帮我解决这个问题吗?我不需要时间,我只想验证日期。我如何删除2小时?

由于

编辑: 在我的php.ini中,我有:

date.timezone ="Europe/Paris"

我通过发送正确的时间来解决问题

1 个答案:

答案 0 :(得分:0)

首先,LessThanOrEqual正如其名称所代表的那样。它比较左操作数是否小于或等于右操作数。无论是\DateTime还是int还是其他内容。

由于您验证\DeteTime我建议您使用Callback ConstraintExpression Constraint,以便您可以定义如何验证这些内容。我个人对此用例的选择是通过FormType中的POST_SUBMIT事件进行验证。见 - How to add validators on the fly in Symfony2?