diff --git a/typo3/sysext/backend/Classes/Form/Element/InputTextElement.php b/typo3/sysext/backend/Classes/Form/Element/InputTextElement.php
index 5a145793b52fcd4c2dba61a3ddfb13605ba4ff0c..65a16c4c115eaa907415738ca4ab1c3931a714d6 100644
--- a/typo3/sysext/backend/Classes/Form/Element/InputTextElement.php
+++ b/typo3/sysext/backend/Classes/Form/Element/InputTextElement.php
@@ -79,7 +79,7 @@ class InputTextElement extends AbstractFormElement
             } elseif (in_array('date', $evalList)) {
                 $attributes['data-date-type'] = 'date';
             }
-            if (MathUtility::canBeInterpretedAsInteger($parameterArray['itemFormElValue'])) {
+            if ($parameterArray['itemFormElValue'] > 0) {
                 $parameterArray['itemFormElValue'] += date('Z', $parameterArray['itemFormElValue']);
             }
             if (isset($config['range']['lower'])) {
diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js b/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js
index 5871dadf0bd9f60496f3586714e51bd7a3c2afa7..0c6fc4675926c0e14b796880b0e74a013cc90490 100644
--- a/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js
+++ b/typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js
@@ -153,7 +153,7 @@ define(['jquery', 'TYPO3/CMS/Backend/FormEngine'], function ($, FormEngine) {
 		switch (type) {
 			case 'date':
 				var parsedInt = parseInt(value);
-				if (isNaN(parsedInt)) {
+				if (!parsedInt) {
 					return '';
 				}
 				theTime = new Date(parsedInt * 1000);
diff --git a/typo3/sysext/backend/Tests/Unit/Form/Element/InputTextElementTest.php b/typo3/sysext/backend/Tests/Unit/Form/Element/InputTextElementTest.php
deleted file mode 100644
index 18e7541e2ea97fe8e919ca4ff876cf0ff268f43c..0000000000000000000000000000000000000000
--- a/typo3/sysext/backend/Tests/Unit/Form/Element/InputTextElementTest.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-namespace typo3\sysext\backend\Tests\Unit\Form\Element;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Backend\Form\Element\InputTextElement;
-use TYPO3\CMS\Backend\Form\NodeFactory;
-use TYPO3\CMS\Core\Imaging\IconFactory;
-use TYPO3\CMS\Core\Tests\UnitTestCase;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Test case
- */
-class InputTextElementTest extends UnitTestCase
-{
-    /**
-     * @var string Selected timezone backup
-     */
-    protected $timezoneBackup = '';
-
-    /**
-     * We're fiddling with hard timestamps in the tests, but time methods in
-     * the system under test do use timezone settings. Therefore we backup the
-     * current timezone setting, set it to UTC explicitly and reconstitute it
-     * again in tearDown()
-     */
-    protected function setUp()
-    {
-        $this->timezoneBackup = date_default_timezone_get();
-    }
-
-    /**
-     * Tear down
-     */
-    protected function tearDown()
-    {
-        date_default_timezone_set($this->timezoneBackup);
-        parent::tearDown();
-    }
-
-
-    /**
-     * Data provider for renderAppliesCorrectTimestampConversion
-     *
-     * @return array
-     */
-    public function renderAppliesCorrectTimestampConversionDataProvider()
-    {
-        // Three elements: input (UTC), timezone of output, expected output
-        return [
-            // German standard time (without DST) is one hour ahead of UTC
-            'date in 2016 in German timezone' => [
-                1457103519, 'Europe/Berlin', 1457103519 + 3600
-            ],
-            'date in 1969 in German timezone' => [
-                -7200, 'Europe/Berlin', -3600
-            ],
-            'begin of the UTC epoch in German timezone' => [
-                0, 'Europe/Berlin', +3600
-            ],
-            // Los Angeles is 8 hours behind UTC
-            'date in 2016 in Los Angeles timezone' => [
-                1457103519, 'America/Los_Angeles', 1457103519 - 28800
-            ],
-            'date in UTC' => [
-                1457103519, 'UTC', 1457103519
-            ]
-        ];
-    }
-
-    /**
-     * @test
-     * @dataProvider renderAppliesCorrectTimestampConversionDataProvider
-     * @param int $input
-     * @param string $serverTimezone
-     * @param int $expectedOutput
-     */
-    public function renderAppliesCorrectTimestampConversion($input, $serverTimezone, $expectedOutput)
-    {
-        date_default_timezone_set($serverTimezone);
-        $data = [
-                'parameterArray' => [
-                    'tableName' => 'table_foo',
-                    'fieldName' => 'field_bar',
-                    'fieldConf' => [
-                        'config' => [
-                            'type' => 'input',
-                            'dbType' => 'datetime',
-                            'eval' => 'datetime',
-                            'default' => '0000-00-00 00:00:00'
-                        ]
-                    ],
-                    'itemFormElValue' => $input
-            ]
-        ];
-        /** @var NodeFactory $nodeFactoryProphecy */
-        $nodeFactoryProphecy = $this->prophesize(NodeFactory::class)->reveal();
-        $subject = new InputTextElement($nodeFactoryProphecy, $data);
-        $result = $subject->render();
-        $this->assertContains('<input type="hidden" name="" value="' . $expectedOutput  . '" />', $result['html']);
-    }
-}
diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
index e977bfdde6ea3a4a7d0b13d70102187d83c6dbe8..56b8ef08437e2eb8a3cab669ec2a97df90ce0c1c 100644
--- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php
+++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
@@ -2662,10 +2662,9 @@ class DataHandler
                     break;
                 case 'date':
                 case 'datetime':
-                    if (MathUtility::canBeInterpretedAsInteger($value) && !$this->dontProcessTransformations) {
+                    $value = (int)$value;
+                    if ($value > 0 && !$this->dontProcessTransformations) {
                         $value -= date('Z', $value);
-                    } elseif (!MathUtility::canBeInterpretedAsInteger($value)) {
-                        $value = 0;
                     }
                     break;
                 case 'double2':
diff --git a/typo3/sysext/core/Tests/Unit/DataHandling/DataHandlerTest.php b/typo3/sysext/core/Tests/Unit/DataHandling/DataHandlerTest.php
index f96dc535822c19179076771ced0158d0f10742cd..725ad8a8c0a79479c3ead7c1ec6ecdc7585ab4f6 100644
--- a/typo3/sysext/core/Tests/Unit/DataHandling/DataHandlerTest.php
+++ b/typo3/sysext/core/Tests/Unit/DataHandling/DataHandlerTest.php
@@ -167,48 +167,6 @@ class DataHandlerTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
         }
     }
 
-
-    public function dataProviderDatetime()
-    {
-        // Three elements: input, timezone of input, expected output (UTC)
-        return [
-            // German standard time (without DST) is one hour ahead of UTC
-            'date in 2016 in German timezone' => [
-                1457103519, 'Europe/Berlin', 1457103519 - 3600
-            ],
-            'date in 1969 in German timezone' => [
-                -7200, 'Europe/Berlin', -10800
-            ],
-            'begin of the epoch in German timezone' => [
-                0, 'Europe/Berlin', -3600
-            ],
-            // Los Angeles is 8 hours behind UTC
-            'date in 2016 in Los Angeles timezone' => [
-                1457103519, 'America/Los_Angeles', 1457103519 + 28800
-            ],
-            'date in UTC' => [
-                1457103519, 'UTC', 1457103519
-            ]
-        ];
-    }
-
-    /**
-     * @test
-     * @dataProvider dataProviderDatetime
-     */
-    public function evalCheckValueDatetime($input, $serverTimezone, $expectedOutput)
-    {
-        $oldTimezone = date_default_timezone_get();
-        date_default_timezone_set($serverTimezone);
-
-        $output = $this->subject->checkValue_input_Eval($input, ['datetime'], '');
-
-        // set before the assertion is performed, so it is restored even for failing tests
-        date_default_timezone_set($oldTimezone);
-
-        $this->assertEquals($expectedOutput, $output['value']);
-    }
-
     /**
      * Data provider for inputValueCheckRecognizesStringValuesAsIntegerValuesCorrectly
      *