diff --git a/core/modules/datetime/src/DateTimeComputed.php b/core/modules/datetime/src/DateTimeComputed.php
index 6939994..cf7ad01 100644
--- a/core/modules/datetime/src/DateTimeComputed.php
+++ b/core/modules/datetime/src/DateTimeComputed.php
@@ -18,7 +18,7 @@ class DateTimeComputed extends TypedData {
   /**
    * Cached computed date.
    *
-   * @var \DateTime|null
+   * @var \Drupal\Core\Datetime\DrupalDateTime|null
    */
   protected $date = NULL;
 
@@ -40,14 +40,19 @@ public function getValue($langcode = NULL) {
       return $this->date;
     }
 
+    /** @var \Drupal\Core\Field\FieldItemInterface $item */
     $item = $this->getParent();
     $value = $item->{($this->definition->getSetting('date source'))};
 
-    $storage_format = $item->getFieldDefinition()->getSetting('datetime_type') == 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT;
+    $datetime_type = $item->getFieldDefinition()->getSetting('datetime_type');
+    $storage_format = $datetime_type === 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT;
     try {
       $date = DrupalDateTime::createFromFormat($storage_format, $value, DATETIME_STORAGE_TIMEZONE);
       if ($date instanceof DrupalDateTime && !$date->hasErrors()) {
         $this->date = $date;
+        if ($datetime_type === 'date') {
+          $this->date->setTime(12, 0, 0);
+        }
       }
     }
     catch (\Exception $e) {
diff --git a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php
index a23de51..fa52d9e 100644
--- a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php
+++ b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php
@@ -48,7 +48,9 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
         /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */
         $end_date = $item->end_date;
 
-        if ($start_date->format('U') !== $end_date->format('U')) {
+        $format = $this->getFieldSetting('datetime_type') === 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT;
+        $options = ['timezone' => DATETIME_STORAGE_TIMEZONE];
+        if ($start_date->format($format, $options) !== $end_date->format($format, $options)) {
           $elements[$delta] = [
             'start_date' => $this->buildDate($start_date),
             'separator' => ['#plain_text' => ' ' . $separator . ' '],
diff --git a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php
index c0feed2..5545878 100644
--- a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php
+++ b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php
@@ -49,7 +49,9 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
         /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */
         $end_date = $item->end_date;
 
-        if ($start_date->format('U') !== $end_date->format('U')) {
+        $format = $this->getFieldSetting('datetime_type') === 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT;
+        $options = ['timezone' => DATETIME_STORAGE_TIMEZONE];
+        if ($start_date->format($format, $options) !== $end_date->format($format, $options)) {
           $elements[$delta] = [
             'start_date' => $this->buildDateWithIsoAttribute($start_date),
             'separator' => ['#plain_text' => ' ' . $separator . ' '],
diff --git a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php
index 4842e1f..6ae68fe 100644
--- a/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php
+++ b/core/modules/datetime_range/src/Plugin/Field/FieldFormatter/DateRangePlainFormatter.php
@@ -48,7 +48,9 @@ public function viewElements(FieldItemListInterface $items, $langcode) {
         /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */
         $end_date = $item->end_date;
 
-        if ($start_date->format('U') !== $end_date->format('U')) {
+        $format = $this->getFieldSetting('datetime_type') === 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT;
+        $options = ['timezone' => DATETIME_STORAGE_TIMEZONE];
+        if ($start_date->format($format, $options) !== $end_date->format($format, $options)) {
           $elements[$delta] = [
             'start_date' => $this->buildDate($start_date),
             'separator' => ['#plain_text' => ' ' . $separator . ' '],
