diff --git a/typo3/sysext/extbase/Classes/Validation/Validator/DateTimeValidator.php b/typo3/sysext/extbase/Classes/Validation/Validator/DateTimeValidator.php
index 5847164c95e6b19f9de66e09e0ccda6f16dc0585..3b5194a8981bb50607a742bc154dd760cda54657 100644
--- a/typo3/sysext/extbase/Classes/Validation/Validator/DateTimeValidator.php
+++ b/typo3/sysext/extbase/Classes/Validation/Validator/DateTimeValidator.php
@@ -15,7 +15,7 @@ namespace TYPO3\CMS\Extbase\Validation\Validator;
  */
 
 /**
- * Validator for DateTime objects.
+ * Validator for DateTime/DateTimeImmutable objects.
  *
  * @api
  */
@@ -30,7 +30,7 @@ class DateTimeValidator extends AbstractValidator
     public function isValid($value)
     {
         $this->result->clear();
-        if ($value instanceof \DateTime) {
+        if ($value instanceof \DateTimeInterface) {
             return;
         }
         $this->addError(
diff --git a/typo3/sysext/extbase/Tests/Unit/Validation/Validator/DateTimeValidatorTest.php b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/DateTimeValidatorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..d1a14c40a4beca705621f532575ac513e6298cc6
--- /dev/null
+++ b/typo3/sysext/extbase/Tests/Unit/Validation/Validator/DateTimeValidatorTest.php
@@ -0,0 +1,80 @@
+<?php
+declare(strict_types = 1);
+namespace TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator;
+
+/*                                                                        *
+ * This script belongs to the Extbase framework.                          *
+ *                                                                        *
+ * It is free software; you can redistribute it and/or modify it under    *
+ * the terms of the GNU Lesser General Public License as published by the *
+ * Free Software Foundation, either version 3 of the License, or (at your *
+ * option) any later version.                                             *
+ *                                                                        *
+ * This script is distributed in the hope that it will be useful, but     *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-    *
+ * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser       *
+ * General Public License for more details.                               *
+ *                                                                        *
+ * You should have received a copy of the GNU Lesser General Public       *
+ * License along with the script.                                         *
+ * If not, see http://www.gnu.org/licenses/lgpl.html                      *
+ *                                                                        *
+ * The TYPO3 project - inspiring people to share!                         *
+ *                                                                        */
+
+use TYPO3\CMS\Extbase\Validation\Validator\DateTimeValidator;
+use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
+
+/**
+ * Test case
+ */
+class DateTimeValidatorTest extends UnitTestCase
+{
+    /**
+     * @test
+     * @dataProvider dateTimeValues
+     */
+    public function acceptsDateTimeValues($value)
+    {
+        $validator = new DateTimeValidator();
+        $result = $validator->validate($value);
+
+        $this->assertFalse($result->hasErrors());
+    }
+
+    /**
+     * @return array
+     */
+    public function dateTimeValues(): array
+    {
+        return [
+            \DateTime::class => [
+                new \DateTime(),
+            ],
+            'Extended ' . \DateTime::class => [
+                new class extends \DateTime {
+                },
+            ],
+            \DateTimeImmutable::class => [
+                new \DateTimeImmutable(),
+            ],
+            'Extended ' . \DateTimeImmutable::class => [
+                new class extends \DateTimeImmutable {
+                },
+            ],
+        ];
+    }
+
+    /**
+     * @test
+     */
+    public function addsErrorForInvalidValue()
+    {
+        $validator = $this->getMockBuilder(DateTimeValidator::class)
+            ->setMethods(['translateErrorMessage'])
+            ->getMock();
+        $result = $validator->validate(false);
+
+        $this->assertTrue($result->hasErrors());
+    }
+}