diff --git a/src/Illuminate/Validation/Validator.php b/src/Illuminate/Validation/Validator.php index ddf5f946c70f..9e4d4f8ae9a7 100755 --- a/src/Illuminate/Validation/Validator.php +++ b/src/Illuminate/Validation/Validator.php @@ -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; } /** diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index 58a1446e9c0b..320ccce10492 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -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']);