Skip to content

Commit

Permalink
[5.4]Percise date validation (#16858)
Browse files Browse the repository at this point in the history
* make date format validation more percise

*     use loose comparison
  • Loading branch information
themsaid authored and taylorotwell committed Dec 19, 2016
1 parent d0b70db commit caff686
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/Illuminate/Validation/Validator.php
Original file line number Diff line number Diff line change
Expand Up @@ -1865,9 +1865,9 @@ protected function validateDateFormat($attribute, $value, $parameters)
return false;
}

$parsed = date_parse_from_format($parameters[0], $value);
$date = DateTime::createFromFormat($parameters[0], $value);

return $parsed['error_count'] === 0 && $parsed['warning_count'] === 0;
return $date && $date->format($parameters[0]) == $value;
}

/**
Expand Down
8 changes: 4 additions & 4 deletions tests/Validation/ValidationValidatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2134,18 +2134,18 @@ public function testValidateDateAndFormat()
$this->assertTrue($v->fails());

$v = new Validator($trans, ['x' => '00-01-01'], ['x' => 'date_format:Y-m-d']);
$this->assertTrue($v->passes());
$this->assertTrue($v->fails());

$v = new Validator($trans, ['x' => ['Not', 'a', 'date']], ['x' => 'date_format:Y-m-d']);
$this->assertTrue($v->fails());

$v = new Validator($trans, ['x' => '2000-01-01T00:00:00Z'], ['x' => 'date_format:Y-m-d\TH:i:sP']);
$v = new Validator($trans, ['x' => '2000-01-01T00:00:00Atlantic/Azores'], ['x' => 'date_format:Y-m-d\TH:i:se']);
$this->assertTrue($v->passes());

$v = new Validator($trans, ['x' => '2000-01-01T00:00:00Z'], ['x' => 'date_format:Y-m-d\TH:i:sP']);
$v = new Validator($trans, ['x' => '2000-01-01T00:00:00Z'], ['x' => 'date_format:Y-m-d\TH:i:sT']);
$this->assertTrue($v->passes());

$v = new Validator($trans, ['x' => '2000-01-01T00:00:00+00'], ['x' => 'date_format:Y-m-d\TH:i:sP']);
$v = new Validator($trans, ['x' => '2000-01-01T00:00:00+0000'], ['x' => 'date_format:Y-m-d\TH:i:sO']);
$this->assertTrue($v->passes());

$v = new Validator($trans, ['x' => '2000-01-01T00:00:00+00:30'], ['x' => 'date_format:Y-m-d\TH:i:sP']);
Expand Down

0 comments on commit caff686

Please sign in to comment.