diff --git a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php index f431b6ec04bf..fd2808ab7add 100644 --- a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php @@ -329,7 +329,7 @@ protected function validateConfirmed($attribute, $value) */ protected function validateDate($attribute, $value) { - if ($value instanceof DateTime) { + if ($value instanceof DateTimeInterface) { return true; } diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index ffbd491c5e49..be7b194d250a 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -4,6 +4,7 @@ use DateTime; use Mockery as m; +use DateTimeImmutable; use Illuminate\Support\Arr; use Illuminate\Support\Carbon; use PHPUnit\Framework\TestCase; @@ -2274,6 +2275,9 @@ public function testValidateDateAndFormat() $v = new Validator($trans, ['x' => new DateTime], ['x' => 'date']); $this->assertTrue($v->passes()); + $v = new Validator($trans, ['x' => new DateTimeImmutable], ['x' => 'date']); + $this->assertTrue($v->passes()); + $v = new Validator($trans, ['x' => '2000-01-01'], ['x' => 'date_format:Y-m-d']); $this->assertTrue($v->passes());